Ошибка: Failed to parse the Currency Converter XML document.
$2 657.05
|
Ошибка: Failed to parse the Currency Converter XML document.
$40 347.39
|
Ошибка: Failed to parse the Currency Converter XML document.
$2 662.54
|
Работаем с рабочим столом
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
Вот и все, что я хотел сегодня вам рассказать.