在游戏中使用keybd_event的问题
来源:互联网 发布:埃文蕾切尔伍德 知乎 编辑:程序博客网 时间:2024/04/28 07:00
原文链接:http://blog.163.com/lion_jaka/blog/static/103192597201311732732255/
今天发现在游戏中,keybd_event不能使用,结果发现游戏是使用directinput实现读取键盘的,关键还是扫描码的问题,我抄了一段老外的代码,经测试有效(在金庸中测试重复输入空格):
#include <iostream>
#include <windows.h>
// for key pushing
BYTE scan_code(DWORD pKey)
{
const DWORD result = MapVirtualKey(pKey, MAPVK_VK_TO_VSC);
return static_cast<BYTE>(result);
}
void press_key(DWORD pKey)
{
keybd_event(static_cast<BYTE>(pKey), scan_code(pKey), 0, 0);
}
void release_key(DWORD pKey)
{
keybd_event(static_cast<BYTE>(pKey), scan_code(pKey), KEYEVENTF_KEYUP, 0);
}
// for testing
#define PRESS(x) press_key(x); std::cout << "Press: " #x << std::endl
#define RELEASE(x) release_key(x); std::cout << "Release: " #x << std::endl
// test
int main(void)
{
for (;;)
{
PRESS(VK_LEFT);
Sleep(10); // hold it for 1/100'th of a second
RELEASE(VK_LEFT);
Sleep(1000); // wait for a second
PRESS(VK_RIGHT);
Sleep(10); // hold it for 1/100'th of a second
RELEASE(VK_RIGHT);
Sleep(1000); // wait for a second
}
}
- 在游戏中使用keybd_event的问题
- 在游戏中使用keybd_event的问题
- 在游戏中使用keybd_event的问题
- (pywin32)解决keybd_event在游戏中失效
- keybd_event的使用
- keybd_event函数模拟键盘输入的问题
- C#中keybd_event 用法
- C#中keybd_event 用法
- 使用keybd_event模拟键盘输入
- 在游戏中使用“CEGUI”
- 在游戏中使用“CEGUI”
- 我在ios游戏开发中遇到的一些问题
- keybd_event,mouse_event 模拟产生键盘事件、鼠标事件的使用
- 在游戏中使用面向对象的FSM
- 一个在游戏中使用的脚本语言---LUA
- 可在 html5 游戏中使用的 js 工具库
- 可在 html5 游戏中使用的 js 工具库
- 在Unity游戏开发中使用暂停的小技巧
- 【leetcode】【162】Find Peak Element
- 【Java】Quartz CronTrigger触发时间最完整配置说明
- android 将时间戳转为代表"距现在多久之前"的字符串
- 163笔试题记录
- GestureDetector详解
- 在游戏中使用keybd_event的问题
- FileUtil
- SpringMVC+POI 实现Excel按模板方式简单导出功能
- Service(服务)
- qsettings 中文键值 注释 支持
- PHP中php://input 和$_POST的区别
- group by 多个条件进行分组
- 友盟分享时会重复调用onComplete回调方法
- 两个viewport的故事(第一部分)