SystemParametersInfo.RU |
|
Главная Обучение Рассылка? FAQ Юмор Заказ! Кто мы? Антиглюк 3D:+Delphi |
Здесь приведён перевод справки Delphi по запросу "SystemParametersInfo". Извините, перевод пока неполный и кривой :( SystemParametersInfo - функция, позволяющая изменять текущие настройки системы. SystemParametersInfo( UINT uiAction, // Системный параметр UINT uiParam, // зависит от параметра и действия PVOID pvParam, // зависит от параметра и действия UINT fWinIni // флаг: нужно ли обновить настройки пользователя(файл WinIni) ); |
Параметр | Значение |
SPI_GETBEEP | Указывает, включено ли предупреждающее устройство звуковой сигнализации. Параметр pvParam является логическим указателем ,если TRUE- включено, FALSE - нет. |
SPI_GETBORDER | Возвращает ширину границы окна, если uiParam=ширина границы,то возвращается TRUE, иначе - False; pvParam-целое или nil |
SPI_GETDEFAULTINPUTLANG | Возвращает язык ввода по умолчанию,pvParam-32битная переменная, содержит раскладку клавиатуры |
SPI_GETFONTSMOOTHING | Указывает, включено ли сглаживание шрифтов |
SPI_GETSCREENSAVEACTIVE | Определяет, работает ли заставка,pvParam - true/false |
SPI_GETSCREENSAVETIMEOUT | Определяет время до включения заставки,pvParam-целое число |
SPI_GETWHEELSCROLLLINES | Определяет,на сколько строк сдвигается страница при прокрутке колёсиком мыши |
SPI_GETWORKAREA | Определяет размер рабочего стола без панели задач, pvParam - типа RECT, возвращает прямоугольник |
SPI_SCREENSAVERRUNNING | подаёт сигнал, что работает заставка |
SPI_SETBORDER | Устанавливает ширину границы окна=pvParam, целое число |
SPI_SETDEFAULTINPUTLANG | Устанавливает раскладку по умолчанию,pvParam- 32 бита, пример ~ 00000409 |
SPI_SETDESKWALLPAPER | Устаналивает обои. pvParam-путь к картинке в формате BMP |
SPI_SETDOUBLECLICKTIME | Уст-ет скорость двойного щелчка в миллисекундах |
SPI_SETDOUBLECLKHEIGHT | Устанавливает высоту прямоугольника, в котором должны произойти 2 щелчка, чтобы быть зарегистрированными как двойной |
SPI_SETDOUBLECLKWIDTH | Ширина прямоугольника, см выше, |
SPI_SETDRAGHEIGHT | Устанавливает высоту, на которую нужно сместить обьект,чтобы включилось перетаскивание |
SPI_SETDRAGWIDTH | Ширина, см выше |
SPI_SETFONTSMOOTHING | Устанавливает сглаживание экранных шрифтов, uiParam=true- включить |
SPI_SETSCREENSAVEACTIVE | Если uiParam =truе, включает заставку, иначе - выключает |
SPI_SETSCREENSAVETIMEOUT | Устанавливает время до включения заставки |
SPI_SETWORKAREA | Устанавливает рабочую область, без панели задач,pvParam -rect, прямоугольник |
Параметр | Значение | uiParam- Зависит от системного параметра, запрашиваемого или установленного. Более подробно об общесистемных параметрах смотри параметр uiAction. Если ничего не указано, определите как нуль(nil,0). pvparam Зависит от системного параметра, запрашиваемого или установленного. Более подробно об общесистемных параметрах смотри параметр uiAction. Если ничего не указано, определите как нуль(nil,0). fWinIni Если параметр установлен, то профиль пользователя должен быть скорректирован. |
//(Действие при щелчке на пункте меню "Добавить" procedure TForm1.N2Click(Sender: TObject); begin if OpenPictureDialog1.Execute then begin listbox1.items.add(OpenPictureDialog1.filename); //Добавили файл в список image1.Picture.LoadFromFile(OpenPictureDialog1.filename); //Загрузили картинку в рисунок, чтобы показать end; end;Теперь - делаем обработчик события ONCLICK для Listbox'a: при щелчке будем показывать выбранную картинку
procedure TForm1.ListBox1Click(Sender: TObject); begin image1.Picture.LoadFromFile(listbox1.items[listbox1.itemindex]); end;Теперь - самое интересное: установка рабочего стола. Пусть она будет выполнятся при двойном щелчке по списку. Идём в Инспектор Обьектов, выделяем Listbox, идём на закладку Evens, щёлкаем в поле рядом с OnDblClick:
procedure TForm1.ListBox1DblClick(Sender: TObject); begin systemparametersinfo(spi_setdeskwallpaper,0, pchar(listbox1.items[listbox1.itemindex]), SPIF_SENDWININICHANGE); //pchar(listbox1.items[listbox1.itemindex])- загоняем строку типа String в PAnsiChar - //так, видимо, для Делфи удобней :) end;Вот теперь уже пожем поменять картинку на рабочем столе. Наконец-то :))
procedure TForm1.Timer1Timer(Sender: TObject); var a: integer;//Вспомогательная переменная begin if listbox1.itemindex=-1 then exit;//Если список пуст-выходим из процедуры a:=listbox1.itemindex;//Присваиваем переменной А значение номера строки listbox1.itemindex:=listbox1.itemindex+1; if a=listbox1.itemindex then listbox1.itemindex:=0; //Если при увеличении номера строки он не изменяется(равн старому), //то переставляем выделение на первую строку, т.е строку №0 image1.Picture.LoadFromFile(listbox1.items[listbox1.itemindex]); systemparametersinfo(spi_setdeskwallpaper,1, pchar(listbox1.items[listbox1.itemindex]), SPIF_SENDWININICHANGE); end;Вот теперь уже меняется рабочий стол! Отлично... Теперь при выключении программы нужно сохранить созданный нами список - выделяем Form1, форму, идём в инспктор обьектов, зaкладка Events,событие OnClose
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin listbox1.items.savetofile('c:\list.list'); end;Конечно, не обязательно сохранять прямо на Диске С: - некоторые любопытные пользователи любят удалять всё подряд :))
listbox1.items.savetofile( extractfilepath(paramstr(0))+'list.list');extractfilepath-даёт путь к файлу,
procedure TForm1.FormCreate(Sender: TObject); begin if fileexists(extractfilepath(paramstr(0))+'list.list') then //Если файл существует, то загружаем из него список listbox1.Items.LoadFromFile(extractfilepath(paramstr(0))+'list.list'); end;Теперь мы имеем почти полностью рабочую программу. А как же с пунктами "Переместить вверх" и "Переместить вниз" ?