实现启动最小化到系统托盘

 interface  
  uses  
      ShellAPI,ShlObj;  
  const  
      WM_BARICON   =   WM_USER   +   200;  
      cm_Exit   =   100;    
      cm_About   =   101;  
  private  
          procedure   WMSysCommand(var   Message:TMessage);  
          message   WM_SYSCOMMAND;  
          procedure   WMBarIcon(var   Message:TMessage);  
          message   WM_BARICON;  
  type  
      _NOTIFYICONDATAW   =   record    
          cbSize:   DWORD;    
          Wnd:   HWND;    
          uID:   UINT;    
          uFlags:   UINT;    
          uCallbackMessage:   UINT;    
          hIcon:   HICON;    
          szTip:   array   [0..63]   of   WideChar;  
      end;  
  var  
      TNotifyIconData:   _NOTIFYICONDATAW;  
  procedure   TfrmMain.WMSysCommand(var   Message:   TMessage);//   message   WM_SYSCOMMAND;  
  var    
        lpData:PNotifyIconData;  
  begin    
      if   Message.WParam   =   SC_ICON   then  
      begin    
            //如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标  
            lpData   :=   new(PNotifyIconDataA);  
            lpData.cbSize   :=   88;    
          //SizeOf(PNotifyIconDataA);  
            lpData.Wnd   :=   frmMain.Handle;  
            lpData.hIcon   :=   frmMain.Icon.Handle;  
            lpData.uCallbackMessage   :=   WM_BARICON;  
            lpData.uID   :=0;  
            lpData.szTip   :=   'GPS信息';  
            lpData.uFlags   :=   NIF_ICON   or   NIF_MESSAGE   or   NIF_TIP;  
            Shell_NotifyIcon(NIM_ADD,lpData);  
            dispose(lpData);  
            frmMain.Visible   :=   False;  
      end    
      else    
      begin    
            //如果是其它的SystemCommand   消息则调用系统缺省处理函数处理之。    
            DefWindowProc(frmMain.Handle,Message.Msg,Message.WParam,Message.LParam);    
      end;    
  end;  
  procedure   TfrmMain.WMBarIcon(var   Message:TMessage);//message   WM_BARICON;  
  var  
        lpData:PNotifyIconData;  
  begin  
      if   (Message.LParam   =   WM_LBUTTONDOWN)   then  
        begin    
            //如果用户点击任务栏图标则将图标删除并回复窗口。    
            lpData   :=   new(PNotifyIconDataA);  
            lpData.cbSize   :=   88;//SizeOf(PNotifyIconDataA);  
            lpData.Wnd   :=   frmMain.Handle;  
            lpData.hIcon   :=   frmMain.Icon.Handle;  
            lpData.uCallbackMessage   :=   WM_BARICON;  
            lpData.uID   :=0;  
            lpData.szTip   :=   'GPS信息';  
            lpData.uFlags   :=   NIF_ICON   or   NIF_MESSAGE   or   NIF_TIP;  
            Shell_NotifyIcon(NIM_DELETE,lpData);  
            dispose(lpData);    
            frmMain.Visible   :=   True;  
        end;  
  end;  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值