最小化拖盘程序

unit    Unit1;  
   interface  
   uses  
       Windows,    Messages,    SysUtils,    Classes,    Graphics,    Controls,    Forms,    Dialogs,ShellAPI;

 
   const  
       WM_BARICON=WM_USER+200;

 
       private  
             procedure    WMSysCommand(var  
     Message:    TMessage);    message    WM_SYSCOMMAND;  
             procedure    WMBarIcon(var  
     Message:TMessage);message    WM_BARICON;  
           {    Private    declarations    }  
       public  
           {    Public    declarations    }  
       end;  
   var  
       Form1:    TForm1;  
   implementation  
   {$R    *.DFM}  
   procedure    TForm1.WMSysCommand  
   (var    Message:TMessage);  
   var  
         lpData:PNotifyIconData;  
   begin  
       if    Message.WParam    =    SC_ICON    then  
       begin  
             //如果用户最小化窗口则将窗口  
             //隐藏并在任务栏上添加图标  
             lpData    :=    new(PNotifyIconDataA);  
             lpData.cbSize    :=    88;  
   //SizeOf(PNotifyIconDataA);  
             lpData.Wnd    :=    Form1.Handle;  
             lpData.hIcon    :=    Form1.Icon.Handle;  
             lpData.uCallbackMessage    :=    WM_BARICON;  
             lpData.uID    :=0;  
             lpData.szTip    :=    'Samples';  
             lpData.uFlags    :=    NIF_ICON    
   or    NIF_MESSAGE    or    NIF_TIP;  
             Shell_NotifyIcon(NIM_ADD,lpData);  
             dispose(lpData);  
             Form1.Visible    :=    False;  
       end  
       else  
       begin  
             //如果是其它的SystemCommand  
             //消息则调用系统缺省处理函数处理之。  
             DefWindowProc(Form1.Handle,Message.  
   Msg,Message.WParam,Message.LParam);  
       end;  
   //  
   end;  
   procedure    TForm1.WMBarIcon(var    Message:TMessage);  
   var  
         lpData:PNotifyIconData;  
   begin  
       if    (Message.LParam    =    WM_LBUTTONDOWN)    then  
         begin  
             //如果用户点击任务栏图标则将图标删除并回复窗口。  
             lpData    :=    new(PNotifyIconDataA);  
             lpData.cbSize    :=    88;//SizeOf(PNotifyIconDataA);  
             lpData.Wnd    :=    Form1.Handle;  
             lpData.hIcon    :=    Form1.Icon.Handle;  
             lpData.uCallbackMessage    :=    WM_BARICON;  
             lpData.uID    :=0;  
             lpData.szTip    :=    'Samples';  
             lpData.uFlags    :=    NIF_ICON    or    NIF_MESSAGE    or    NIF_TIP;  
             Shell_NotifyIcon(NIM_DELETE,lpData);  
             dispose(lpData);  
             Form1.Visible    :=    True;  
         end;  
   end;  
   end.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值