Delphi изменяем миниатюру программы в Windows 7

Опубиковано: 30.10.2009 г., автор: , просмотров: 49342

Delphi Windows Vista, Windows 7

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

Вот как будет выглядеть это окошко:
delphi windows 7

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

Ну что поехали, открываем 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';

 

P.S. Хотите вперед всех остальных посетителей сайта получать свежие Видео уроки, Аудио подкасты, статьи по Delphi.
Участвовать в конкурсах и постепенно вливаться в нашу команду ?!
Тогда прямо сейчас подписывайтесь на бесплатную мультимедийную рассылку сайта delphiexpert.ru
Нас уже больше чем 3000 человек ! Подписаться



Похожие материалы

Последние из рубрики

Yakovchenko Sergey 30 Oct 2009 в 00:00 #
Имхо сделал урок, потому что за 7-кой будующее. Время XP в компьютерной индустрии - закончилось :(
Rus95 30 Oct 2009 в 00:00 #
Как будут нормальные уроки? Уже давно ничего полезного не было , одна фигня. Попа + лизать вот как уроки называются.
DLL 30 Oct 2009 в 00:00 #
Сделайте лучше урок по работе с DLL - пользы больше будет. Только качественный.
Мартин 30 Oct 2009 в 00:00 #
Урохороший, время ХР не закончилось, его сново возабновили в производстве, для мнибуков. А вот критика и ной людей которые не невнимателны, но и читать не умеют. Если вы новички, то не пеишите того в чём не разбераетесь.
Yakovchenko Sergey 30 Oct 2009 в 00:00 #
DLL: Будет вам DLL. Спасибо за идею следующего урока.

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