Qt使用Windows Api模拟键盘事件,附Qt::key转windows键值
2017-11-24 14:02
1566 查看
具体参数说明,参考msdn。
函数原型
将Qt::key的值转为windows bVk的值,即调用keybd_event需要的键盘值
函数原型
VOID WINAPI keybd_event( _In_ BYTE bVk, _In_ BYTE bScan, _In_ DWORD dwFlags, _In_ ULONG_PTR dwExtraInfo );使用方法
keybd_event(key, 0x45, KEYEVENTF_EXTENDEDKEY, 0);//按键按下 keybd_event(key, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);//按键松开
将Qt::key的值转为windows bVk的值,即调用keybd_event需要的键盘值
int translateKeyCode(int key) { int k = key; bool legal = true; if(k >= Qt::Key_0 && k <= Qt::Key_9) { } else if(k >= Qt::Key_A && k <= Qt::Key_Z) { } else if(k >= Qt::Key_F1 && k <= Qt::Key_F24) { k &= 0x000000ff; k += 0x40; } else if(k == Qt::Key_Tab) { k = 0x09; } else if(k == Qt::Key_Backspace) { k = 0x08; } else if(k == Qt::Key_Return) { k = 0x0d; } else if(k <= Qt::Key_Down && k >= Qt::Key_Left) { int off = k - Qt::Key_Left; k = 0x25 + off; } else if(k == Qt::Key_Shift) { k = 0x10; } else if(k == Qt::Key_Control) { k = 0x11; } else if(k == Qt::Key_Alt) { k = 0x12; } else if(k == Qt::Key_Meta) { k = 0x5b; } else if(k == Qt::Key_Insert) { k = 0x2d; } else if(k == Qt::Key_Delete) { k = 0x2e; } else if(k == Qt::Key_Home) { k = 0x24; } else if(k == Qt::Key_End) { k = 0x23; } else if(k == Qt::Key_PageUp) { k = 0x21; } else if(k == Qt::Key_Down) { k = 0x22; } else if(k == Qt::Key_CapsLock) { k = 0x14; } else if(k == Qt::Key_NumLock) { k = 0x90; } else if(k == Qt::Key_Space) { k = 0x20; } else legal = false; if(!legal) return 0; return k; }
相关文章推荐
- Qt使用Windows Api模拟鼠标单击双击滚轮事件
- [转载]Qt 软键盘[模拟]之键盘触发事件
- 使用SWT模拟鼠标键盘事件
- 键盘虚拟键值编码表 使用keybd_Event 以及虚拟按键与扫描码相互转化函数MapVirtualKey
- <Linux+qt>设置使用键盘控制事件响应
- 使用jquery模拟键盘事件,但window系统并不会真的响应事件,只是浏览器当前页面会响应而已
- Qt 软键盘[模拟]之键盘触发事件
- qt 键盘按键事件 范例 keyPreEvent()
- Qt for Mac模拟鼠标以及键盘事件
- 模拟键盘事件 System.Windows.Forms.SendKeys
- 使用SWT模拟鼠标键盘事件
- Windows下Qt使用Usb摄像头采集视频实现鼠标事件
- windows之全局键盘钩子以及键盘事件模拟触发
- Qt 软键盘 [模拟]之键盘触发事件
- Qt 软键盘[模拟]之键盘触发事件
- Qt中使用事件过滤器来处理键盘焦点
- windows模拟键盘鼠标事件DirectX游戏中
- Qt中使用事件过滤器来处理键盘焦点
- Android 使用 sendevent 模拟鼠标和键盘事件
- 使用SWT模拟鼠标键盘事件