zoukankan      html  css  js  c++  java
  • 在游戏中使用keybd_event的问题

    转自在游戏中使用keybd_event的问题  


    今天发现在游戏中,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
        }
    }

  • 相关阅读:
    获取客户及登录IP(Java)
    js初步
    数组方法
    BOM ;浏览器对象模型
    js事件
    EventListener()
    JS面向对象
    正则表达式
    -CSS盒模型和float
    EventListener()
  • 原文地址:https://www.cnblogs.com/noble/p/4144126.html
Copyright © 2011-2022 走看看