zoukankan      html  css  js  c++  java
  • 一段托盘程序

    delphi托盘程序

    Delphi的托盘编程   。现在很多程序都用这个,比如傲游,迅雷等,主要代码如下:

    uses

    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

    Dialogs, ShellAPI, AppEvnts, StdCtrls, Menus;

    const WM_NID = WM_User + 1000; //声明一个常量

    private

        { Private declarations } // 定义两个函数

        procedure SysCommand(var SysMsg: TMessage); message WM_SYSCOMMAND;

        procedure WMNID(var msg:TMessage); message WM_NID;

    public

    end;

    var

    Form1: TForm1;

    NotifyIcon: TNotifyIconData; // 全局变量

    implementation

    {$R *.dfm}

    procedure TForm1.WMNID(var msg:TMessage);

    var

    mousepos: TPoint;

    begin

    GetCursorPos(mousepos); //获取鼠标位置

    case msg.LParam of

        WM_LBUTTONUP: // 在托盘区点击左键后

        begin

          Form1.Visible := not Form1.Visible; // 显示主窗体与否

          Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 显示主窗体后删除托盘区的图标

          SetWindowPos(Application.Handle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW); // 在任务栏显示程序

        end;

       

        WM_RBUTTONUP: PopupMenu1.Popup(mousepos.X, mousepos.Y); // 弹出菜单

    end;

    end;

    procedure TForm1.FormDestroy(Sender: TObject);

    begin

    Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 删除托盘图标

    end;

    procedure TForm1.SysCommand(var SysMsg: TMessage);

    begin

    case SysMsg.WParam of

        SC_MINIMIZE: // 当最小化时

        begin

          SetWindowPos(Application.Handle, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_HIDEWINDOW);

          Hide; // 在任务栏隐藏程序

          // 在托盘区显示图标

          with NotifyIcon do

          begin

            cbSize := SizeOf(TNotifyIconData);

            Wnd := Handle;

            uID := 1;

            uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;

            uCallBackMessage := WM_NID;

            hIcon := Application.Icon.Handle;

            szTip := '托盘程序';

          end;

          Shell_NotifyIcon(NIM_ADD, @NotifyIcon); // 在托盘区显示图标

        end;

    else

        inherited;

    end;

    end;

    {以下三个函数为托盘右键菜单,可自行添加功能}

    procedure TForm1.N1Click(Sender: TObject);

    begin

    ShowMessage('Delphi托盘小程序!');

    end;

    procedure TForm1.N2Click(Sender: TObject);

    begin

    Form1.Visible := true; // 显示窗体

    SetWindowPos(Application.Handle, HWND_TOP, 0, 0, 0, 0, SWP_SHOWWINDOW);

    Shell_NotifyIcon(NIM_DELETE, @NotifyIcon); // 删除托盘图标

    end;

    procedure TForm1.N3Click(Sender: TObject);

    begin

    Shell_NotifyIcon(NIM_DELETE, @NotifyIcon);

    Application.Terminate;

    end;

    end.

  • 相关阅读:
    ansible常用的一些模块
    使用jmx监控tomcat
    snmp的监控
    Selenium 入门到精通系列:六
    Selenium 入门到精通系列:五
    Selenium 入门到精通系列:四
    Selenium 入门到精通系列:三
    Selenium 入门到精通系列:二
    Selenium 入门到精通系列:一
    Python 发邮件例子
  • 原文地址:https://www.cnblogs.com/onionhacker/p/3427890.html
Copyright © 2011-2022 走看看