
15.12.2012, 13:23
|
 |
.
|
|
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
|
|
Вот только не нужно про не нашёл, такой информации масса.
Код:
var
TaskBarCreated: Boolean;
function TaskBarAddIcon(hWindow : HWND; ID : Cardinal; ICON : HICON; CallbackMessage : Cardinal; Tip : PChar) : Boolean;
var
NID : TNotifyIconData;
begin
FillChar(NID, SizeOf(TNotifyIconData), 0);
with NID do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := hWindow;
uID := ID;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := CallbackMessage;
hIcon := Icon;
lstrcpyn(szTip, Tip, SizeOf(szTip));
end;
Result := Shell_NotifyIcon(NIM_ADD, @NID);
end;
{----------------------------------------------------------}
function TaskBarModifyIcon(hWindow : HWND; ID : Cardinal; Flags : Cardinal; ICON : HICON; Tip : PChar) : Boolean;
var
NID : TNotifyIconData;
begin
FillChar(NID, SizeOf(TNotifyIconData), 0);
with NID do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := hWindow;
uID := ID;
uFlags := Flags;
hIcon := Icon;
lstrcpyn(szTip, Tip, SizeOf(szTip));
end;
Result := Shell_NotifyIcon(NIM_MODIFY, @NID);
end;
{----------------------------------------------------------}
function TaskBarDeleteIcon(hWindow : HWND; ID : Integer) : Boolean;
var
NID : TNotifyIconData;
begin
FillChar(NID, SizeOf(TNotifyIconData), 0);
with NID do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := hWindow;
uID := ID;
end;
Result := Shell_NotifyIcon(NIM_DELETE, @NID);
end;
//---------------------------------------------------------
// прячем в Tray
//---------------------------------------------------------
procedure CreateTaskBarIcon(Wnd : HWND);
begin
TaskBarCreated := TaskBarAddIcon(Wnd, ICON_ID, AppBossIcon, WM_TASKBAR, szBossName);
end;
...
function WndProc(Wnd : HWND; Msg, wParam, lParam : Longint) : Longint; stdcall;
begin
Resut := 0;
case Msg of
WM_SYSCOMMAND :
begin
case LOWORD(wParam) of
SC_MINIMIZE :
begin
CreateTaskbarIcon(Wnd);
ShowWindow(Wnd, SW_MINIMIZE);
ShowWindow(Wnd, SW_HIDE);
end;
SC_RESTORE :
begin
if TaskBarCreated then
begin
TaskBarDeleteIcon(Wnd, ICON_ID);
TaskBarCreated := False;
ShowWindow(Wnd, SW_RESTORE);
end;
end;
end;
end;
WM_DESTROY :
begin
if TaskBarCreated then
TaskBarDeleteIcon(Wnd, ICON_ID);
PostQuitMessage(0);
Exit;
end;
Result := DefWindowProc(Wnd, Msg, wParam, lParam);
end;
Более подробно смотри в сети.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
|