DeskIcons.pas Unit unit DeskIcons; interface uses Graphics; // Будет использоваться TColor procedure SetDesktopIconColor(Forground, Background: TColor; Trans: Boolean); procedure SetDefaultIconColors; implementation uses Windows, CommCtrl; // будут использоваться HWND и ListView_XXXXX procedure SetDesktopIconColor(Forground, Background: TColor; Trans: Boolean); var Window: HWND; begin // Находим нужное окно в три этапа Window := FindWindow(‘Progman’, ‘Program Manager’); // Используем FindWindowEx для нахождения дочернего окна Window := FindWindowEx(Window, HWND(nil), ‘SHELLDLL_DefView’, »); // SysListView32, это список с иконками на рабочем столе Window := FindWindowEx(Window, HWND(nil), ‘SysListView32’, »); // Используем макрос для очистки цвета фона if Trans then ListView_SetTextBkColor(Window, $ffffffff) // фоновый цвет else ListView_SetTextBkColor(Window, Background); // фоновый цвет ListView_SetTextColor(Window, Forground); // передний цвет // теперь перерисовываем иконки ListView_RedrawItems(Window, 0, ListView_GetItemCount(Window) — 1); UpdateWindow(Window); // даём команду «немедленно перерисовать» end; procedure SetDefaultIconColors; { Эта процедура устанавливает цвета, которые заданы в windows по умолчанию } var Kind: Integer; Color: TColor; begin Kind := COLOR_DESKTOP; Color := GetSysColor(COLOR_DESKTOP); SetSysColors(1, Kind, Color); end; end.
