Многим пользователям давно известно, что в операционных системах
Windows Vista и Windows 7 при наведении курсора мышки
на приложение в панели задач, вылетает окно с миниатюрой (мини-видом) этой
программы (рис.1). Нашей сегодняшней задачей будет изменить эту картинку,
подставив туда своё произвольное изображение.
Вот как будет выглядеть это окошко:

А вот после изменения нашим кодом:

Ну что поехали, открываем Delphi и создаем новый проект.
Первым делом в раздел uses дописываем dwmapi. Надеюсь с этим вы справились,
потому что теперь нам необходимо заставить разрешать изменение картинки. Для
этого выделяем форму и создаем на ней обработчик событий OnCreate, полный
листинг данной процедуры представлен ниже:
procedure TForm1.FormCreate(Sender: TObject);
var
DEnable: DWORD;
bmp: TBItmap;
begin
DEnable:= DWMNCRP_ENABLED;
If S_OK <>
DwmSetWindowAttribute(Handle,DWMWA_FORCE_ICONIC_REPRESENTATION,
@DEnable,SizeOf(DEnable));
then MessageBox(0,’Error’,0,0);
If S_OK <>
DwmSetWindowAttribute(Handle,DWMWA_HAS_ICONIC_BITMAP,
@DEnable,SizeOf(DEnable));
then MessageBox(0,’Error’,0,0);
Bmp:= TBitmap.Create;
Bmp.LoadFromFile('полный путь к нужной картинке');
If S_OK <>
DwmSetIconicThumbnail(Handle,Bmp.Handle,0);
then MessageBox(0,’Error’,0,0);
end;
Вот и все ! В принципе здесь нет ничего сложного, стоит лишь пояснить, что
означает каждый параметр функций.
Функция DwmSetWindowAttribute
1-ый параметр, это ссылка на идентификатор окна (иначе хэндл).
2-ой параметр задаёт атрибуты для изменения
3-ий это служебный параметр, им может быть определенная переменная - всё
зависит от атрибута.
4-ый задаёт размер служебного параметра.
Функция DwmSetIconicThumbnail
1-ый - параметр её отвечает за идентификатор нашей формы.
2-ой - ссылка на HBitmap.
3-ый в нём задаются параметры экрана, или можно выставить 0 чтобы не морочить
голову.
Внимание !
Для тех, у кого стоит версия ниже Delphi 2009 – и операционная
система Windows 7 Необходимо перед ключевым словом
implementation после описания класса
дописать импортируемые функции:
function DwmSetWindowAttribute(hwnd: HWND; dwAttribute: DWORD;
pvAttribute: Pointer; cbAttribute: DWORD): HResult; stdcall; external 'dwmapi.dll';
function DwmSetIconicThumbnail(hwnd: HWND; hbmp: HBITMAP;
dwSITFlags: DWORD): HResult; stdcall; external 'dwmapi.dll';
|