Как сделать иконки Рабочего стола прозрачными
uses Windows; function DZGetDesktopIconWindow: HWND; begin Result := FindWindow(PChar('Progman'), PChar('Program Manager')); Result := FindWindowEx(Result, 0, PChar('SHELLDLL_DefView'), nil); Result := FindWindowEx(Result, 0, PChar('SysListView32'), nil); end;
А это, как достичь эффекта прозрачности:
uses Windows, CommCtrl; procedure DZSetDesktopIconTransparent; var Desktop : HWND; begin Desktop := DZGetDesktopIconWindow; ListView_SetTextBkColor(Desktop, MAXDWORD); ListView_RedrawItems(Desktop, 0, Pred( ListView_GetItemCount(Desktop))); UpdateWindow(Desktop); end;
Между прочим, Вы можете установить любой цвет фона или текста заголовка значка, не только прозрачным. Вот пример:
uses Windows, CommCtrl, Graphics; // Только для определения TColor procedure DZSetDesktopIconColors(const FColor, BColor: TColor); var Desktop : HWND; begin Desktop := DZGetDesktopIconWindow; ListView_SetTextColor(Desktop, FColor); ListView_SetTextBkColor(Desktop, BColor); ListView_RedrawItems(Desktop, 0, Pred( ListView_GetItemCount(Desktop))); UpdateWindow(Desktop); end;
В процедуре выше FColor - цвет текста, BColor - цвет фона.
И наконец, эта процедура сбросит Ваши цвета назад после Ваших экспериментов над ними:
uses Windows; procedure DZResetDesktopIconColors; var Kind, Color : Integer; begin Kind := COLOR_DESKTOP; Color := GetSysColor(COLOR_DESKTOP); SetSysColors(1, Kind, Color); end;
Комментарии