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

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

    Delphi Windows Vista, Windows 7

    Многим пользователям давно известно, что в операционных системах 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';

     

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



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

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

    Дмитрий 13 Oct 2012 в 00:00 #
    Владимир спасибо а урок ! Но меня волнует еще один вопрос:
    "Как туда добавить еще какие либо кнопки ну кроме картинки?"

    Могли бы Вы мне на него ответить ???
    Саша 21 Jun 2011 в 00:00 #
    А можно на Windows XP такое сделать???
    прога супер спасибо!)
    Beast 16 May 2011 в 00:00 #
    некто с ником Мартин - обдолбанный школьник что ли? Че он как лось заладил то про "хорошие уроки и я первый", то про "Урохороший, время ХР не закончилось, его сново возабновили в производстве, для мнибуков. А вот критика и ной людей которые не невнимателны, но и читать не умеют. Если вы новички, то не пеишите того в чём не разбераетесь." Это ваще эпик фейл, не говоря про то, что он не смотрит даже, что печатает.

    Зы. Наруто - школотянский аццтой
    Kotofff 14 Dec 2010 в 00:00 #
    Не загружает картинку. Ничего не получилось !!!
    Александр 24 Nov 2010 в 00:00 #
    Почему перед then стоит точка с запятой? ((

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