procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = Ord('A')) then ShowMessage('OK'); end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = Ord('A')) then ShowMessage('OK'); end;
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = Ord('A')) then ShowMessage('OK'); end; 晚了
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = Ord('A')) then ShowMessage('OK'); end;
是在屏幕上按ctrl+alt+a,不是指在窗口的edit上按,如何解决啊
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = 65) then ShowMessage('OK'); end;
你是不是想实现像QQ截图一样的功能。可以注册系统热键,如下面的代码可以检测CTRL+ALT+B FA:integer; procedure wmhotkeyhandle(var msg: tmessage); message wm_hotkey;procedure TForm1.Button1Click(Sender: TObject); begin FA := GlobalAddAtom(pchar('a')) - $C000; registerhotkey(handle, FA, mod_Alt or mod_control, 66); end;procedure TForm1.wmhotkeyhandle(var msg: tmessage); begin if (msg.LParamHi = 66) and (msg.LParamLo = mod_alt or mod_control) then begin showmessage('你按下的是CTRL+ALT+B'); end; end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin unregisterhotkey(handle, FA); DeleteAtom(FA); end;
使用注册热键是个好方法,如果用hook如何解决??
...... private atom: word;//系统原子 procedure WMHOTKEY(var msg: TWMHOTKEY); message WM_HOTKEY; end;procedure TForm1.FormCreate(Sender: TObject); begin atom:=GlobalAddAtom('MINIZHUXIANCHUN'); RegisterHotKey(Self.Handle,atom,MOD_ALT+MOD_SHIFT,VkKeyScan('a')); end;procedure TForm1.FormDestroy(Sender: TObject); begin UnRegisterHotKey(Self.Handle,atom); DeleteAtom(atom); end;procedure TMainForm.WMHOTKEY(var msg: TWMHOTKEY); begin 这里写你想要响应组合键处理的代码. end;
Shift: TShiftState);
begin
if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = Ord('A')) then
ShowMessage('OK');
end;
Shift: TShiftState);
begin
if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = Ord('A')) then
ShowMessage('OK');
end;
Shift: TShiftState);
begin
if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = Ord('A')) then
ShowMessage('OK');
end;
晚了
Shift: TShiftState);
begin
if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = Ord('A')) then
ShowMessage('OK');
end;
Shift: TShiftState);
begin
if (ssAlt in Shift) and (ssCtrl in Shift) and (Key = 65) then
ShowMessage('OK');
end;
procedure wmhotkeyhandle(var msg: tmessage); message wm_hotkey;procedure TForm1.Button1Click(Sender: TObject);
begin
FA := GlobalAddAtom(pchar('a')) - $C000;
registerhotkey(handle, FA, mod_Alt or mod_control, 66);
end;procedure TForm1.wmhotkeyhandle(var msg: tmessage);
begin
if (msg.LParamHi = 66) and (msg.LParamLo = mod_alt or mod_control) then
begin
showmessage('你按下的是CTRL+ALT+B');
end;
end;procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
unregisterhotkey(handle, FA);
DeleteAtom(FA);
end;
private
atom: word;//系统原子
procedure WMHOTKEY(var msg: TWMHOTKEY); message WM_HOTKEY;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
atom:=GlobalAddAtom('MINIZHUXIANCHUN');
RegisterHotKey(Self.Handle,atom,MOD_ALT+MOD_SHIFT,VkKeyScan('a'));
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
UnRegisterHotKey(Self.Handle,atom);
DeleteAtom(atom);
end;procedure TMainForm.WMHOTKEY(var msg: TWMHOTKEY);
begin
这里写你想要响应组合键处理的代码.
end;