按住钥匙一段不确定的时间
Holding a key down for an uncertain time
我正试图按住箭头键一段不确定的时间,然后松开它。伪码:
SendKey(VK_RIGHT, KEY_DOWN);
// Do something
SendKey(VK_RIGHT, KEY_UP)
我使用Visual Studio 2012和Windows 7-64位。我已经搜索了很多时间,并尝试了这样的东西:
#include <Windows.h>
#include <WinUser.h>
using namespace std;
[...]
INPUT Event = {0};
Event.type = INPUT_KEYBOARD;
Event.ki.dwFlags = 0;
Event.ki.wScan = ::MapVirtualKey(VK_RIGHT, MAPVK_VK_TO_VSC);
Event.ki.time = 2000; // hold 2 sek. ?
Event.ki.dwExtraInfo = 0;
Event.ki.wVk = VK_RIGHT; // (Right-Arrow)
SendInput(1, &Event, sizeof(Event)); // hold
Sleep(1000); // do something (waiting in this case)
Event.ki.dwFlags = KEYEVENTF_KEYUP; // release
SendInput(1, &Event, sizeof(Event));
但这并没有像预期的那样奏效,我不知道出了什么问题。按键按下正确,但不能按住。提前谢谢。
根据文档,time
字段是时间戳,而不是持续时间(请参阅此处)。由于某种原因,文档实际上并没有说明时间戳的格式。我一直只使用0
来表示这个值,它允许系统选择适当的时间戳。
我也相信你需要设置:
Event.ki.dwFlags = KEYEVENTF_EXTENDEDKEY;
...
Event.ki.dwFlags = KEYEVENTF_KEYUP | KEYEVENTF_EXTENDEDKEY;
以便箭头键代码工作。
此外,与Captain提到的一样,使用适当的VK_
宏(VK_LEFT)。请注意,0x27
实际上被定义为VK_RIGHT
,这可能是代码中的另一个问题。
相关文章:
- 不确定要在我的main中放入什么才能使我的代码正常工作
- 尝试一次将单个字符读取到大小不确定的数组中
- 布尔函数在一段时间内不起作用
- 我的类中的第二个参数是一个数组.我不确定如何在主程序中编写
- 为什么将值分配给一个位字段不给予相同的值
- C++中的继承和模板:为什么以下一段代码不编译?
- GDI 窗口中的游戏循环/一段时间后不刷新并崩溃
- 我应该如何处理编写一段确定订阅包节省的代码的逻辑
- Zmq 套接字在一段时间后不工作
- SDL C++ TTF 会在一段时间后随机消失(并且不会回来)
- EM_EXGETSEL与文本选择顺序无关.如何确定一段选定文本中的插入符号位置
- 按住钥匙一段不确定的时间
- 套接字将在一段时间后死亡而不能重新连接
- C++基于 TCP 的服务器套接字需要一段时间才能返回 10054 错误。它不会立即返回
- 什么会导致我的程序在一段时间后不使用所有的内核
- 一段时间不使用 Visual C++ 后" "缺少必需的文件
- 在Poco c++库中发送调用在运行一段时间后在Windows上不返回
- 一段代码不能被intel编译器编译,但是clang可以编译它
- 一段 qcustomplot 代码不起作用(小示例代码)
- 我想从这段代码中删除使用命名空间std,但我不确定什么都需要用std::作为前缀