|
#1
|
|||
|
|||
Трей
Здравствуйте. Может кто помочь с реализацией корректного кода, для скрытия программы в трей. Варианты в сети есть, но что-то как-то не совсем так как нужно получается. Возможно что-то не хватает или не так делаю. Подскажите кто что знает.
|
#2
|
||||
|
||||
Вот (не мой) пример с использованием ShellApi
Прячет окно в трей |
#3
|
||||
|
||||
Код:
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); |