Delphi 托盘/热键《LceMeaning》

以下代码本人在Delphi XE2下编译通过

==================================================================

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Menus;

type
  TForm1 = class(TForm)
    TrayIcon1: TTrayIcon;     //托盘控件
    pm1: TPopupMenu;          //托盘菜单
    N1: TMenuItem;
    N2: TMenuItem;
    procedure N2Click(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure TrayIcon1DblClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    aatom : ATOM;
    procedure hotkey(var msg:TMessage);message WM_HOTKEY;
    //定义全局热键消息事件

    procedure WMsyscommand(var msg : Twmsyscommand);message wm_syscommand;
    //托盘消息定义
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

//全局执键执行过程
procedure TForm1.hotkey(var msg: TMessage);
begin
  if TWMHotKey(msg).HotKey=aatom then
  begin
    TrayIcon1DblClick(Self);
  end;
end;

//删除全局热键
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  UnregisterHotKey(Handle,aatom);
  GlobalDeleteAtom(aatom);
end;

//创建全局执键
procedure TForm1.FormCreate(Sender: TObject);
begin
  if FindAtom(hotKey)=0 then
   begin
     aatom:=GlobalAddAtom(hotKey);
   end;
  RegisterHotKey(Handle,aatom,MOD_ALT,$43);   //ALT + C
end;


procedure TForm1.N1Click(Sender: TObject);
begin
  Form1.Show;
  OpenIcon(Form1.Handle);    //激活窗口
end;

procedure TForm1.N2Click(Sender: TObject);
begin
  TrayIcon1.Visible := False;     //删除托盘图标
  Application.Terminate;
end;

procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
  //双击托盘图标显示/隐藏窗口
  if WindowState = wsMinimized then
    begin
      Form1.Show;
      OpenIcon(Form1.Handle);
    end
  else
    begin
      Form1.Hide;
      WindowState := wsMinimized;
    end;
end;

//窗口缩小到托盘执行代码
procedure Tform1.WMsyscommand(var msg : Twmsyscommand);
begin
  if msg.CmdType = SC_MINIMIZE then
    Form1.Hide;
  inherited;
end;

end.

==================================================================

代码结束.

Delphi 托盘/热键《LceMeaning》

上一篇:创建采购订单批到程序用的BAPI


下一篇:解决ASP.NET Web API Json对象循环参考错误