zoukankan      html  css  js  c++  java
  • Shellapi 托盘程序完整版本

    //托盘程序完整版本 
    {
    需要控件
    ImageList1
    PopupMenu1

    其他:2个Icon图标
    }

    uses Shellapi;{引入Shellapi}

    {在Interface的uses下面定义}
    Const                 
      My_IconEvent = WM_USER + 1000;

      private
       { Private declarations }
        myIcon:TNotifyIcondata;
        NormalIcon,DisableIcon:Ticon;
        procedure IconOnClick(Var msg:TMessage);
        Message My_IconEvent;

    procedure TForm1.FormCreate(Sender: TObject);
    begin
      NormalIcon:=TIcon.Create; {创建NormalIcon图标}
      DisableIcon:=TIcon.Create ; {创建DisableIcon图标}
      ImageList1.GetIcon(0,NormalIcon); {创建图标1}
      ImageList1.GetIcon(1,DisableIcon); {创建图标2}
      myIcon.cbSize:=Sizeof(TNotifyIcondata);
      myIcon.wnd:=handle;
      myIcon.uID:=1;
      myIcon.uFlags:=nif_Message or nif_tip or nif_Icon;
      myIcon.uCallbackMessage:=My_IconEvent;
      myIcon.Sztip:='鼠标放在图标上的提示信息'; {鼠标放在图标上 的 提示信息}
      myIcon.hIcon:=NormalIcon.handle; {这具是默认图标显示}
      Shell_NotifyIcon(nim_add,@myIcon); {这具是默认图标显示}
    end;

    procedure TForm1.IconOnClick(Var msg:TMessage);
    Var
      Mousepos:Tpoint;
    begin
       Case Msg.LParam of
         wm_Lbuttonup: begin {左键单击图标显示主窗体}
                            ShowWindow(Self.Handle,SW_SHOW);{窗体的显示位置会出现一些问题}
                          end;
         wm_Rbuttonup: begin {右键单击图标显示参数菜单}
                            GetCursorpos(Mousepos);
                            PopupMenu1.Popup(Mousepos.X,Mousepos.Y);
                          end;
        end;
    end;

    procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    begin
      if (Application.MessageBox('确定要退出该监测系统吗?','警示',MB_YESNO or MB_ICONINFORMATION)= IDYES) then
          begin
             Shell_NotifyIcon(nim_delete,@myIcon); {程序退出时会迅速释放图标}
             NormalIcon.Free;
             DisableIcon.Free;
             CanClose:=True;
          end
          else CanClose:=False;
    end;

    procedure TForm1.N1Click(Sender: TObject);
    begin
         ShowWindow(Self.Handle,SW_SHOW);
    end;

    procedure TForm1.N21Click(Sender: TObject);
    begin
      myIcon.hIcon:=NormalIcon.handle;{DisableIcon图标显示}
      Shell_NotifyIcon(nim_modify,@myIcon);
    end;

    procedure TForm1.N2Click(Sender: TObject);
    begin
       myIcon.hIcon:=DisableIcon.handle; {NormalIcon图标显示}
       Shell_NotifyIcon(nim_modify,@myIcon);
    end;

    procedure TForm1.Exit1Click(Sender: TObject);
    begin
      Close;
    end;




  • 相关阅读:
    一个人是否靠谱,闭环很重要(深度)
    远程通信的几种选择(RPC,Webservice,RMI,JMS的区别)
    如何量化考核技术人的 KPI?
    ECharts
    Spring IO Platform介绍
    百亿级日访问量的应用如何做缓存架构设计?
    大型分布式系统中的缓存架构
    Delphi实现屏幕截图、窗口截图、指定区域截图
    Delphi窗体重绘API
    GdiPlus 一个给 Delphi 提供的新的 GDI+ 接口很好用!
  • 原文地址:https://www.cnblogs.com/xe2011/p/2531610.html
Copyright © 2011-2022 走看看