procedure TSell.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.Message=WM_KEYDOWN)and(Msg.wParam=VK_CONTROL+VK_HOME)then
begin
end;
Run Code Online (Sandbox Code Playgroud)
RRU*_*RUZ 10
要检查VK_CONTROL虚拟键的状态,必须使用该GetKeyState功能.
试试这个样本
procedure TSell.ApplicationEvents1Message(var Msg: tagMSG;
var Handled: Boolean);
begin
if (Msg.Message=WM_KEYDOWN) then
if (GetKeyState(VK_CONTROL) < 0) and (Msg.wParam=VK_HOME) then
//do your stuff
end;
Run Code Online (Sandbox Code Playgroud)
VK_CONTROL+ VK_HOME= 17 + 36 = 53 = Ord('5').您正在检查用户是否按下5了键盘的顶行.(这不是你想要的吗?你的问题没有说.)
您不能只添加两个独立键的虚拟键代码来发现它们是否同时被按下.Ctrl并且Home是两个不同的键,每个键生成自己的wm_KeyDown和wm_KeyUp消息.(但是不要试图按顺序检测这两个键的按键.它会比你想要的复杂得多.检测何时Home按下,然后GetKeyState像Rruz的答案所示那样用来检测Ctrl当时是否已经失效你收到了当前的键盘信息.)
| 归档时间: |
|
| 查看次数: |
1542 次 |
| 最近记录: |