Q&A

  • TrayIcon에 일정시간 사용하지 않으면 시계가 나오게하는것을 알고 싶어요

  
TrayIcon에 일정시간 사용하지 않으면 아이콘에시계가 나오게하는것을 알고 싶어요

번번히 도움을 받네요..


감사해요.. 님 좋은 하루 보내세요.. 그리고 행복하시구요..



1  COMMENTS
  • Profile
    구창민 2003.02.20 04:00
    아래 코드를 참고하시고 즐거운 프로그래밍 하세요~


    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
      Dialogs, ShellAPI, ExtCtrls, StdCtrls;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        Button2: TButton;
        Timer1: TTimer;
        Image1: TImage;
        Image2: TImage;
        procedure Timer1Timer(Sender: TObject);
        procedure FormClose(Sender: TObject; var Action: TCloseAction);
        procedure Button1Click(Sender: TObject);
        procedure Button2Click(Sender: TObject);
      private
       { Private declarations }
      public
       { Public declarations }
      end;

    var
      Form1: TForm1;
      MyNotifyStruct: TNotifyIconData;

    implementation
    {$R *.DFM}

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      with MyNotifyStruct do
      begin
        cbSize := SizeOf(MyNotifyStruct);
        Wnd := Form1.handle;
        uID := 1;
        uFlags := NIF_ICON or NIF_TIP;
        hIcon := Image1.Picture.Icon.Handle;
        StrPCopy(szTip, Application.Title);
      end;

    // 아래 주석으로 표시된 부분은 Tray Icon 으로 만들때 폼을 Hide 시켜서
    // Task Bar 에 나타나지 않도록 만들때 사용하면 된다
    // ShowWindow(Form1.Handle, SW_HIDE);
      Shell_NotifyIcon(NIM_ADD, @MyNotifyStruct); // Tray Icon 으로 등록
    // ShowWindow(Application.Handle, SW_HIDE);
    // ShowWindow(Application.Handle, SW_MINIMIZE); // Show중인 다른 폼들도 감추기 위해
    // ShowWindow(Application.Handle, SW_HIDE);
    end;

    procedure TForm1.Button2Click(Sender: TObject);
    begin
    // Tray Icon 정보를 변경한다
      Shell_NotifyIcon(NIM_Delete, @MyNotifyStruct);
    end;

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      StrPCopy(MyNotifyStruct.szTip, TimetoStr(Time)); // 현재 시간을 Caption으로...
    // 아이콘을 주기적으로 바꾼다
      if (MyNotifyStruct.hIcon = Image1.Picture.Icon.Handle) then
        MyNotifyStruct.hIcon := Image2.Picture.Icon.Handle
      else
        MyNotifyStruct.hIcon := Image1.Picture.Icon.Handle;

      Shell_NotifyIcon(NIM_Modify, @MyNotifyStruct);
    end;

    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    begin
    // 프로그램 종료시 Tray Icon을 내린다
      Shell_NotifyIcon(NIM_Delete, @MyNotifyStruct);
    end;

    end.