Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 28.02.2012, 19:19
Kaktuz Kaktuz вне форума
Начинающий
 
Регистрация: 30.10.2011
Сообщения: 149
Репутация: 10
По умолчанию Трей

Здравствуйте. Может кто помочь с реализацией корректного кода, для скрытия программы в трей. Варианты в сети есть, но что-то как-то не совсем так как нужно получается. Возможно что-то не хватает или не так делаю. Подскажите кто что знает.
Ответить с цитированием
  #2  
Старый 28.02.2012, 19:31
Аватар для YVitaliy
YVitaliy YVitaliy вне форума
Местный
 
Регистрация: 14.12.2011
Сообщения: 481
Версия Delphi: Borland Delphi7
Репутация: 17
По умолчанию

Вот (не мой) пример с использованием ShellApi
Прячет окно в трей
Вложения
Тип файла: rar ShellProject.rar (167.9 Кбайт, 4 просмотров)
Ответить с цитированием
  #3  
Старый 28.02.2012, 23:03
Аватар для cotseec
cotseec cotseec вне форума
Активный
 
Регистрация: 16.07.2008
Сообщения: 353
Версия Delphi: D7,TDE06,RAD09
Репутация: 1443
По умолчанию

Код:
interface

uses
  Windows,Messages;

  function DelIcon(hWindow:HWND; ID:Cardinal):BOOL;
  function AddIcon(hWindow:HWND; ID:Cardinal; ICON:hIcon;
                   CallbackMessage:Cardinal; Tip:PChar):BOOL;

const
  NIM_ADD         = $00000000;
  NIM_DELETE      = $00000002;

  NIF_MESSAGE     = $00000001;
  NIF_ICON        = $00000002;
  NIF_TIP         = $00000004;

type
  TNotifyIconData = record
    cbSize: DWORD;
    Wnd: HWND;
    uID: UINT;
    uFlags: UINT;
    uCallbackMessage: UINT;
    hIcon: HICON;
    szTip: array [0..63] of Char;
  end;
  PNotifyIconData=^TNotifyIconData;

  function Shell_NotifyIcon(dwMessage: DWORD; lpData: PNotifyIconData): BOOL; stdcall;

implementation

function Shell_NotifyIcon; external 'shell32.dll' name 'Shell_NotifyIconW';

function AddIcon(hWindow:HWND; ID:Cardinal; ICON:hIcon;
                 CallbackMessage:Cardinal; Tip:PChar):BOOL;
var
  tmp:TNotifyIconData;
begin
  FillChar(tmp, SizeOf(TNotifyIconData), 0);
  with tmp do
  begin
    cbSize:=SizeOf(TNotifyIconData);
    Wnd:=hWindow;
    uID:=ID;
    uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
    uCallbackMessage:=CallbackMessage;
    hIcon:=ICON;
    lstrcpyn(szTip, Tip, SizeOf(szTip));
  end;
  Result:=Shell_NotifyIcon(NIM_ADD,@tmp);// показываем иконку
end;

function DelIcon(hWindow:HWND; ID:Cardinal):BOOL;
var
  tmp:TNotifyIconData;
begin
  FillChar(tmp, SizeOf(TNotifyIconData), 0);
  tmp.cbSize:=SizeOf(TNotifyIconData);
  tmp.Wnd:=hWindow;
  tmp.uID:=ID;
  Result:=Shell_NotifyIcon(NIM_DELETE,@tmp);// убираем иконку
end;

function AddIcon(hWindow:HWND; ID:Cardinal; ICON:hIcon; CallbackMessage:Cardinal; Tip:PChar):BOOL;// добавить иконку

hWindow - окно, получающее сообщения от иконки
ID - ID иконки
ICON - сама иконка, полученая, например, LoadIcon(HInstance,'Icon_1')
CallbackMessage - идентификатор сообщения от иконки
Tip - всплывающая подсказка над иконкой

function DelIcon(hWindow:HWND; ID:Cardinal):BOOL;// удалить иконку

hWindow - окно, получающее сообщения от иконки
ID - ID иконки

скрыть окно программы
Код:
if AddIcon(Window,TRAY_ID_GLOBAL,
                        LoadIcon(HInstance,'Icon_1'),
                        TRAY_CLICK,TRAY_HINT) then
                               SetWindowPos(Window,0,0,0,0,0,
                               SWP_NOMOVE or SWP_NOSIZE or WP_HIDEWINDOW);

показать окно программы
Код:
if DelIcon(Window,TRAY_ID_GLOBAL) then
                       SetWindowPos(Window,0,0,0,0,0,SWP_NOMOVE or
                       SWP_NOSIZE or SWP_SHOWWINDOW);
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:07.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter