简单的问题:如何得到组合键的键值? (100分)

  • 主题发起人 主题发起人 jrq
  • 开始时间 开始时间
J

jrq

Unregistered / Unconfirmed
GUEST, unregistred user!
刚才测试一个小程序,在KeyPress中用到了组合键,如下:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#1 then
ShowMessage('您按下了 Ctrl+a 组合健');

if key=#2 then
ShowMessage('您按下了 Ctrl+b 组合健');
end;
-----窗体的KeyPreview已设为True。

能否得到 Ctrl+其他键、Ctrl+控制键、Ctrl+方向键 等组合健的键值?
有什么好的办法吗?

如果能得到这些组合键的键值,就可以简单的模拟“热键”了。 [:)]
 
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Shift = [ssCtrl]) and (Key = 65) then
showmessage('按下了Ctrl+A键');
end;
 
利用KeyDown
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);

例: if ssCtrl in Shift then...
 
to bjaman 、柳鹏 老兄:
这样不是我想要的结果。
 
不知道这个和 Virtual Key Codes 是否有关系?
没有搞清楚。
 
在做测试,还没成功 ,呵呵
 
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
showmessage('组合键 ctrl '+key+'组合键值:'+ IntToSTr(ord(key)));
end;
但ctrl+方向键没法测出其键值 :( 我用的是笔记本上的


 
没有太明白你的意思,如果你是想向其它窗口发送按键信息,可以直接用发消息的办法试试!WM_KEYDOWN,WM_KEYUP,WM_CHAR
 
ZRWeng,好像在MDI窗口下不行啊
 
没有成功,再结。
 
后退
顶部