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;
回答
要检查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;
非常感谢你我的亲爱的 –
@Saeed:欢迎来到StackOverflow。如果@ RRUZ的答案是解决您的问题的方法,请考虑接受它(使用左侧的复选标记)。 –
请注意GetAsyncKeyState(当您想要具有CURRENT状态(Async)时调用它)或VK_HOME键被按下时的状态(正常:GetKeyState)之间的区别。 GetAsyncKeyState信息:http://msdn.microsoft.com/en-us/library/ms646293(VS.85).aspx –
VK_CONTROL
+ VK_HOME
= 17 + 36 = 53 = Ord('5')
。您正在检查用户是否沿键盘的第一行按下了。 (这是不是你想要的?你的问题没有说。)
你不能只是添加两个独立键的虚拟键代码,以发现他们是否都被同时按下。 Ctrl键和主页是两个不同的密钥,而且每一个产生它自己的wm_KeyDown
和wm_KeyUp
消息。 (但是不要试图按顺序检测这两个按键,它会变得比你想要的复杂得多,当按下首页,然后用GetKeyState
,就像Rruz的答案所示,检测是否Ctrl在您收到当前键盘消息时已经关闭。)
- 1. 为什么json_decode不适合我?
- 2. 为什么'-finstrument-functions`不适合我?
- 3. 为什么Dijit不适合我?
- 4. MySQL-为什么LAST_INSERT_ID()不适合我?
- 5. 为什么getElementsByTagName()不适合我?
- 6. 为什么onLocationChanged函数不适合我?
- 7. 为什么IE黑客不适合我?
- 8. 为什么Data.Text示例不适合我?
- 9. 为什么远程button_to不适合我?
- 10. 为什么html5 postMessage不适合我?
- 11. 为什么QML MediaPlayer/VideoOutput不适合我?
- 12. 为什么innerHTML不适合我?
- 13. 为什么webmatrix不适合我?
- 14. 为什么AjaxForm不适合我?
- 15. 为什么@Table不适合我?
- 16. 为什么layout_weight和weightSum不适合我?
- 17. 为什么onpropertychange不适合我?
- 18. 为什么struts验证不适合我?
- 19. 为什么Class.forName()不适合我?
- 20. 为什么ctags不适合我?
- 21. 为什么accept_nested_attributes_for不适合我? (rails 3)
- 22. 为什么我自己的外部IP不适合我?
- 23. 为什么箱子不合适?
- 24. 为什么排序不适合矢量?
- 25. 为什么这个CSS不适合?
- 26. XAMPP为什么不适合生产?
- 27. 为什么addview不适合在宽
- 28. 为什么JDBC不适合Android开发
- 29. 为什么`sqlpp-mysql`不适合链接?
- 30. 为什么Sparkjava不适合生产?
你是什么意思“工作”?会发生什么,你预期会发生什么? –