• 一段托盘程序


    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.

  • 相关阅读:
    JAVA开发人员画图表总结(ECHARTS)
    Spring Validation 表单校验
    Java BIO、NIO、AIO 学习
    JAVA笔试题
    JAVA GC优化入门
    jstat 使用日志
    JAVA内存泄漏
    JAVA 线程池入门事例
    JAVA Semaphore
    Serializable 介绍
  • 原文地址:https://www.cnblogs.com/onionhacker/p/3427890.html
Copyright © 2020-2023  润新知