Visual Basic, C & C++
분류 Delphi

델파이 : System Tray에 Icon 넣기

페이지 정보

본문

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ShellApi, Menus;

const
  WM_NOTIFYICON = WM_USER + 333;

type
  TForm1 = class(TForm)
    PopMenu: TPopupMenu;
    Show1: TMenuItem;
    EXit1: TMenuItem;
    procedure EXit1Click(Sender: TObject);
    procedure Show1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
    NotifyIcnData : TNotifyIconData;
    hMainIcon : HICON;

    procedure ClickTrayIcon(var msg: TMessage); message WM_NOTIFYICON;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;


implementation

{$R *.dfm}

// System Tray에 Icon의 Event 수신
procedure TForm1.ClickTrayIcon(var msg: TMessage);
var
    pt: TPoint;
begin
  case msg.lparam of
    WM_LBUTTONDBLCLK : Show;
    WM_RBUTTONDOWN :
      begin
        GetCursorPos(pt);
        PopMenu.Popup(pt.x, pt.y);
      end;
  end;
end;

procedure TForm1.EXit1Click(Sender: TObject);
begin
  Application.Terminate;
end;

// Form Close 했을 때
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caNone;
  Hide; // Form 숨기기
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  // System Tray에 Icon 표시
  hMainIcon := LoadIcon(MainInstance, 'MAINICON');

  Shell_NotifyIcon(NIM_DELETE, @NotifyIcnData);

  with NotifyIcnData do
  begin
    cbSize            := sizeof(TNotifyIconData);
    Wnd               := handle;
    uID               := 11111;
    uFlags            := NIF_MESSAGE or NIF_ICON or NIF_TIP;
    uCallbackMessage  := WM_NOTIFYICON;
    hIcon             := HMainIcon;
    szTip             := 'System Tray Test';
  end;

  Shell_NotifyIcon(NIM_ADD, @NotifyIcnData);
end;

procedure TForm1.Show1Click(Sender: TObject);
begin
  Show;
end;

end.

관련자료

등록된 댓글이 없습니다.
프로그래밍
Today's proverb
“무릇 물이란 지세를 따라 흐르되 작은 틈도 놓치지 않고 적시니 지혜를 갖춘 자와 같고, 움직이면서 아래로 흘러가니 예를 갖춘 자와 같으며, 어떤 깊은 곳도 머뭇거리지 않고 들어가니 용기를 가진 자와 같고 장애물이 막혀서 갇히면 고요히 맑아지니 천명을 아는 자와 같으며, 험한 곳을 거쳐 멀리 흐르지만 끝내 남을 허물어뜨리는 법이 없으니 덕을 가진 자와 같다. 천지는 이것으로 이루어지고, 만물은 이것으로 살아가며, 나라는 이것으로 안녕을 얻고, 만사는 이것으로 평안해지며, 만물은 이것으로 바르게 되는 것이다. 이것이 지혜로운 자가 물을 좋아하는 이유이다.” (한영, <<한시외전>>)