procedure TMainForm.KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (GetKeyState(Ord('Q'))<0) and (GetKeyState(Ord('W'))<0) and (GetKeyState(Ord('E'))<0)
then ShowMessage('You pressed it');
end;
上述事件只有在焦点设置为主窗体时才起作用。 如果我运行应用程序,并一直按 Tab 并将焦点更改为表单上的任何控件,它会禁用此事件,直到我们再次将焦点更改为主表单?
问题是, 如何在焦点不在主窗体的情况下检测三个键是否被按下?
同时,我认为如果我在应用程序运行时使用 RegisterHotKey,但注册 Q、W 和 E 并不是一个好主意。
procedure TMainForm.WMHotKey(var Msg: TWMHotKey);
begin
if ActiveCaption = 'my Form Caption' then
Begin
if Msg.HotKey = HotKey1 then
begin
//DoSomething;
end
else
if Msg.HotKey = HotKey2 then
begin
//DoSomething;
end;
End
else
//DoSomething;
end;
RegisterHotKey
API 吗? - RepeatUntil