zoukankan      html  css  js  c++  java
  • 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.

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

    代码结束.

  • 相关阅读:
    Table XXX is marked as crashed and should be repaired问题
    冗余带来的麻烦
    thinkPHP模板引擎案例
    css案例学习之float浮动
    css案例学习之父子块的margin
    block,inline和inline-block概念和区别
    css案例学习之div与span的区别
    css案例学习之盒子模型
    css案例学习之层叠样式
    css案例学习之继承关系
  • 原文地址:https://www.cnblogs.com/LceMeaning/p/4285368.html
Copyright © 2011-2022 走看看