Qt模拟虚拟键盘实现
每一个按键都有对应的十六进制,实现方法是通过keybd_event函数来实现的。
比如多任务,Ctrl+Alt+Tab ,模拟这个快捷键。
#define EN_KEY_CTRL 0x11 //CTRL
#define EN_KEY_ALT 0x12 //ALT
#define EN_KEY_TAB 0x09 //TAB
void multitask()
{
int nVK[4] = { 0, };
int nVKNum = 0;
nVK[0] = (EN_KEY_CTRL);
nVK[1] = (EN_KEY_ALT);
nVK[2] = (EN_KEY_TAB);
nVKNum = 3;
SimulateKeyToSystem(nVKNum, nVK);
}
void SimulateKeyToSystem(int nVKNum, int *nVK)
{
INT32 i = 0;
char cExtendFlag = 0;
//模拟按键消息
for (i=0; i<nVKNum; i++)
{
keybd_event(nVK[i], MapVirtualKey(nVK[i], 0), cExtendFlag, 0);
}
for (i=0; i<nVKNum; i++)
{
keybd_event(nVK[i], MapVirtualKey(nVK[i], 0),
cExtendFlag | KEYEVENTF_KEYUP, 0);
}
}