Ошибка: Failed to parse the Currency Converter XML document.
$45 242.24


Ошибка: Failed to parse the Currency Converter XML document.
$44 775.81


Ошибка: Failed to parse the Currency Converter XML document.
$1 621.01


Работаем с рабочим столом

Привет! Сегодня мы будем работать с тем, что постоянно видим на экране своего монитора, а именно со своим рабочим столом. Не буду сильно болтать о том о сем а сразу же начну с полезных примеров. Для начала давайте разберемся как можно обновить рабочий стол. Я знаю целых два способа для этого. Вот первый из них:

procedure TForm1.Button1Click(Sender: TObject);
begin
SendMessage(FindWindow(«Progman», «Program Manager»),
WM_COMMAND,
$A065,
0);
end;

Вот второй способ:

procedure TForm1.Button1Click(Sender: TObject);

var
hDesktop: HWND;
begin
hDesktop := FindWindowEx(FindWindowEx(
FindWindow(«Progman», «Program Manager»), 0,
«SHELLDLL_DefView», «»), 0, «SysListView32», «»);
PostMessage(hDesktop, WM_KEYDOWN, VK_F5, 0);
PostMessage(hDesktop, WM_KEYUP, VK_F5, 1 shl 31);
end;

Теперь давайте разберемся как можно при помощи Делфи установить на рабочий стол свои собственные обои. При этом надо учитывать, что картинка должна быть в формате bmp. Вот как это делается:

SystemParametersInfo(SPI_SetDeskWallpaper,0,Pchar(«обоина»),SPIF_UPDATEINIFILE);


В данном примере естественно вместо слова обоина нужно вписать путь к bmp-шке. Теперь давайте вызовим окно завершения работы Windows. Вот код:

SendMessage (FindWindow («Progman», «Program Manager»), WM_CLOSE, 0, 0);

Теперь давайте разберемся как можно выровнять иконки по левую сторону рабочего стола. Для начала нам нужно получить дескриптор рабочего стола, который является обычным ListView. Вот получение его:

function GetDesktopListViewHandle: THandle;
var
S: String;
begin
Result := FindWindow(«ProgMan», nil);
Result := GetWindow(Result, GW_CHILD);
Result := GetWindow(Result, GW_CHILD);
SetLength(S, 40);
GetClassName(Result, PChar(S), 39);
if PChar(S) <> «SysListView32» then Result := 0;
end;

Теперь можно работать с этим дескриптором при помощи API:

SendMessage(GetDesktopListViewHandle,LVM_ALIGN,LVA_ALIGNLEFT,0);

Вот эта строка и выравнивает иконки по левому краю. Сейчас я научу вас скрывать/показывать иконки которые расположены на рабочем столе. Делается это вот каким способом, для начала мы создадим процедуру, а потом запустим ее с разными параметрами, вот эта процедура:

procedure ShowDesktop(const YesNo : boolean);
var h : THandle;
begin
h := FindWindow(«ProgMan», nil);
h := GetWindow(h, GW_CHILD);
if YesNo = True then
ShowWindow(h, SW_SHOW)
else
ShowWindow(h, SW_HIDE);
end;

Теперь нам надо вызвать нашу процедуру. Если вы хотите скрыть иконки на рабочем столе то вызовете:

ShowDesktop(false);

Если вам надо показать иконки то:

ShowDesktop(true);

Теперь две функции не очень на прямую относящиеся к рабочему столу, но описать их мне хочется здесь и сейчас. Первая это зачем парится со всеми иконками когда можно просто отключить монитор:

SendMessage(Application.Handle, WM_SYSCOMMAND, SC_MONITORPOWER, 0);

Если хотите включить монитор то вместо 0 ставьте 1. Ну, и наконец в этой статье мы вызывали окно завршения работы Windows. Давайте теперь просто перезагрузим нашу систему:

ExitWindows(EW_RESTARTWINDOWS, 0 );

Можно вместо EW_RESTARTWINDOWS писать:

EW_RESTARTWINDOWS
EW_REBOOTSYSTEM
EW_EXITANDEXECAPP

Вот и все, что я хотел сегодня вам рассказать.

 

Интересное

О Windows Vista
<img src=«http://i-faq.ru/uploads/posts/2007-09/1189807052_[b]windows[/b]_vista_logo.png» align=«left» style=«border: none;» alt=«О Windows Vista» />О Windows Vista слышали если не все, то, как...
Подробнее...
Отправка по SMTP с...
1. Введение. Практически каждый, кто сталкивается с работой в инете на низком уровне при создании какой-либо почтовой программы, оповещалки, либо троя или кейлогера, напарывается на такой...
Подробнее...
Какой же из ноутбуков...
Итак, вы стоите перед витриной или сидите перед монитором в уютном кресле и размышляете над вопросом, какой же из ноутбуков Apple будет для вас более подходящим. Кажется, что выбор не так велик:...
Подробнее...
10 фактов об архивировании...
Резервное копирование данных, конечно, не такая потрясающая штука, как двухъядерные микросхемы Intel, позволяющие установить на компьютере одновременно и Mac OS X, и Windows XP, но...
Подробнее...
Флэшка или чудо будущего...
Могли ли бы мы раньше, при союзе, представить себе то, что устройство размерами меньшее, чем коробок спичек способно уместить в себе картинную галерею, архив деловой переписки или музыкальный...
Подробнее...
Секреты популярности сайта
Подумайте, хорошо ли раскрыта тема вашего сайта на его страницах. Что в основном пользователь ищет в интернете? Информацию.От различных товаров до банальных новостей. Предоставляйте информацию на...
Подробнее...
"Грабим" странички
С аудиограбберами знакомы все. Нам предстоит сделать свой собственный граббер информации из Интернета. Нам понадобится подопытный кролик, на роль которого я предлагаю выбрать сайт...
Подробнее...
Почему не нужно чистить реестр
Давным-давно, в незапамятные времена (еще до изобретения операционной системы Microsoft Windows 95), компьютеры Windows и программы, разработанные для них, включали в свой состав файлы...
Подробнее...
Уроки программирования на...
В данной книге будут рассматриваться самые эффективные способы написания кода с помощью классов MFC(Microsoft Foundation Class Library). Вы пройдете весь курс за пару дней. Примеры несложные,...
Подробнее...
Защита зрения от компьютера
Технический прогресс принес не только пользу человечеству, но еще и ощутимый вред здоровью людей, которые пользуются дарами цивилизации. О чем это я? Ну, конечно же, речь здесь идет о компьютерах...
Подробнее...