Показать сообщение отдельно
  #161  
Старый 15.12.2012, 13:23
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 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 в.д.
Ответить с цитированием