回 帖 发 新 帖 刷新版面

主题:如何让最小化程序响应键盘消息

如何让最小化程序响应键盘消息
求大虾指导!

回复列表 (共2个回复)

沙发

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    procedure WMHotKeyHandle(var Msg:TMessage); message WM_HotKey;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  HotKeyID: integer;
implementation

{$R *.dfm}

procedure Tform1.WMHotKeyHandle(var Msg:Tmessage);
begin
  if(Msg.LParamHi=Ord('1')) and (Msg.LParamLo=MOD_Control+MOD_Alt) then
  begin
    if IsIconic(application.Handle) then
       application.Restore
    else
       application.BringToFront;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  HotKeyVK  : integer;
  HotKeyMOD : integer;
begin
  HotKeyVK:=Ord('1');
  HotKeyMOD:=MOD_Control+MOD_Alt;
  HotKeyID:=GlobalAddAtom(PChar(application.Title))-$C000;
  if not RegisterHotKey(self.Handle,HotKeyID,HotKeyMOD,HotKeyVK) then
  begin
    //如果失败
    UnregisterHotKey(Handle,HotKeyID);
    DeleteAtom(HotKeyID);
  end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   UnregisterHotKey(Handle,HotKeyID);
   DeleteAtom(HotKeyID);
end;

end.

板凳

1.定义热键

2.键盘钩子

我来回复

您尚未登录,请登录后再回复。点此登录或注册