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