Как сделать иконки Рабочего стола прозрачными
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 ; |
Комментарии