Карта сайтаСсылкиКонтакты

Как сделать иконки Рабочего стола прозрачными

PDF Печать
Статьи

Сначала нужно найти дескриптор окна, которое содержит значки Рабочего Стола.

Вот эта функция:


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;

 

Добавить комментарий


Защитный код
Обновить