点击托盘,这时候窗体恢复显示,想在这个时候执行一事件:)

解决方案 »

  1.   

    转载:
    ---- Windows 95/98是基于事件驱动机制的操作系统。任何一个控件都是通过发消息
    或对系统消息的处理来实现功能的。系统的Tray小图标区实际上也是一个标准控件。
    对它的控制和操纵,与其他的标准控件一样,也是通过发送消息和处理消息进行的。
    应用程序通过系统功能调用Shell_NotifyIcon向Tray小图标区发送消息,即可达到我
    们的目的。  Shell_NotifyIcon函数包含在单元ShellApi中,说明如下:
     function Shell_NotifyIcon(dwMessage: DWORD; 
    lpData: PNotifyIconData): BOOL; stdcall;
     其中:
     dwMessage:要发给Tray小图标区的消息,
    可以取以下三个值:
    NIM_ADD       在Tray小图标区上增加一个图标
    NIM_MODIFY    修改一个Tray小图标区的图标
        NIM_DELETE    删除Tray小图标区的一个图标
     lpData:指向TNotifyIconDataA结构的指针,
    此结构是要增加的图标的信息。
     PNotifyIconData = ^TNotifyIconDataA
     TNotifyIconDataA = record
        cbSize : DWORD;
        Wnd : HWND;
        uID : UINT;
        uFlags : UINT;
        uCallbackMessage : UINT;
        hIcon : HICON;
        szTip : array [0..63] of AnsiChar;
     end;---- 各字段的含义如下所述: 
    cbSize:记录TNotifyIconDataA的大小,
    设置为SizeOf( TNotifyIconDataA);
    Wnd:接收Tray小图标区鼠标事件的窗口
    的句柄,例如:MainForm.Handle;
    uID:图标的ID(Tray小图标区鼠标
    事件的wPara参数的值);
    uFlags:此条消息的有效范围(低三位有效)
    NIF_MESSAGE    0x1 // uCallbackMessage参数有效
    NIF_ICON    0x2 // hIcon is valid参数有效
    NIF_TIP        0x4 // szTip is valid参数有效
    uCallbackMessage:系统回送消息的ID;
    hIcon:显示在Tray小图标区上的图标的句柄;
    szTip:鼠标移动到图标上时系统显示的提示信息。
     
    增加小图标程序如下:
     procedure TMainForm.InstallIcon;
     var IconData: TNotifyIconData;
     begin
          CdRomIcon := TIcon.Create;
          CdRomIcon.LoadFromFile( 'cddrive.ico' );
          IconData.cbSize := SizeOf( IconData );
          IconData.Wnd := Handle;
          IconData.uID := 1;
          IconData.uFlags := NIF_ICON 
          or NIF_MESSAGE or NIF_TIP;
          IconData.uCallBackMessage := WM_USER+1;
          IconData.hIcon := CdRomIcon.Handle;
          IconData.szTip := 'CDROM软开关';
          Shell_NotifyIcon( NIM_ADD, @IconData );
     end;---- 记住,在单元的USES子句中,别忘了要加上ShellApi单元。 ---- 3、如何响应Tray小图标区上图标的鼠标事件? 
    ---- 当用户在你的图标上移动、点击时,Tray小图标区会向应用程序发送如下的消息: 
       messageID = uCallbackMessage
       wParam = uID
       lParam = mouse event (如:WM_LBUTTONDOWN)---- 我们只需在主窗口的定义中,声明一个过程,来响应这个消息,在它的实现部分就
    可以对消息进行处理了。 消息处理函数声明: 
     procedure IconOnClick(var message:
     TMessage); message WM_USER+1;
     实现过程:
     procedure TMainForm.IconOnClick
    ( var message: Tmessage);
     var p : TPoint;
     begin
     if (message.lParam = WM_LBUTTONDOWN) then
       ShowWindow(Handle, SW_SHOW );
     if (message.lParam = WM_RBUTTONDOWN) then
     begin
     GetCursorPos(p);
     pop1.Popup( p.x ,p.y );
     end;
     end;
    ---- 其中,pop1为在主窗口中定义的弹出式菜单。 ---- 4、如何控制系统任务栏上不显示应用程序? 
    ---- 通常的Windows程序在启动后,会在系统任务栏上显示一个小窗口,我们既然
    已有了小图标,就没必要再显示一个小窗口了。 
    ---- 这可以通过下列函数实现 
    SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);
    ShowWindow(Handle, SW_HIDE);
      

  2.   

    delphi制作的托盘程序http://www.zahui.com/html/2/37335.htm
      

  3.   

    定义一个消息处理函数:系统给窗体发来了一个消息,就由下面这个函数来处理。每个消息处理函数都是处理某一类消息的,下面函数体的定义和一般的函数定义有什么不一样:消息处理函数要在后面加上消息的名称,这样当系统发来WM_NID消息时,就是自动触发WMNID消息处理函数。procedure WMNID(var msg:TMessage);message WM_NID;       begin        case msg.LParam of            WM_LBUTTONUp: Form1.Visible:=not Form1.Visible;           WM_RBUTTONUP: ShowMessage(‘您点击的是右键’);        End;End;