5

我想知道如何在我的 delphi 应用程序中获取键盘输入而不集中。我正在编程的应用程序将在我玩游戏时截取屏幕截图。

我已经编写了屏幕截图代码,但我错过了最后一块,任何建议都将不胜感激。

4

2 回答 2

6

您可以注册一个热键(使用RegisterHotKeyUnregisterHotKey函数)并在WM_HOTKEY按下键时使用消息进行拦截。

试试这个样本

type
  TForm3 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
  public
     procedure WMHotKey(var Message: TMessage); message WM_HOTKEY;
  end;

var
  Form3: TForm3;

implementation


{$R *.dfm}


{ TForm3 }

const
  SaveScreeenHK=666;

procedure TForm3.FormCreate(Sender: TObject);
begin
 RegisterHotKey(Handle, SaveScreeenHK , MOD_CONTROL, VK_F10);
end;

procedure TForm3.FormDestroy(Sender: TObject);
begin
  UnregisterHotKey(Handle, SaveScreeenHK);
end;

procedure TForm3.WMHotKey(var Message: TMessage);
begin
 //call your method here
end;
于 2012-12-03T15:23:19.517 回答
1

从那以后,我一直很忙,并创建了一个用于在 delphi 中获取击键的库。你可以在这里找到它:https ://github.com/Kobusvdwalt/DelphiKeylogger

它仍然需要文档,但基本上你只需调用 olgetletter 函数。

于 2013-02-17T11:07:38.863 回答