一般我们用这招无非两种,一种是实现单个按键,一种是实现组合按键。

Windows提供了一个模拟键盘API函数Keybd_event(),使用该函数可以相应的屏蔽键盘的动作。Keybd_event()函数能触发一个按键事件,也就是说会产生一个WM_KEYDOWN或WM_KEYUP消息。

例子1:模拟按下'A'键
   keybd_event(65,0,0,0);
   keybd_event(65,0,KEYEVENTF_KEYUP,0);
例子2:模拟按下'ALT+F4'键
   keybd_event(18,0,0,0);
   keybd_event(115,0,0,0);
   keybd_event(115,0,KEYEVENTF_KEYUP,0);
   keybd_event(18,0,KEYEVENTF_KEYUP,0);

虚拟键盘表:

windows提供keybd_event实现虚拟键盘_输入框


Qt中只要包含“Windows.h”就可以用了keybd_event()函数了。

请注意,这个是调用系统按键,并不是你窗口的虚拟按键。简单的说,比如你实现了让系统“按a键”,然后按Ctrl+R键运行。程序运行后,你会发现,你原来程序代码编辑器的光标后面多了个a。如果你想点击你程序中的按钮并在输入框中输入按键a,则你可以,在你点击按钮的槽中,设置焦点在输入框中,再用这个方法。
 
这个只适合部分需求,还是具体需求具体分析吧~