windows 下最底层的模拟键盘

对于大多程序模拟按键使用下面的代码就可以胜任。但是换成游戏就不行了。
keybd_event(VK_LWIN, 0, 0 ,0);
keybd_event(VK_LWIN, 0, KEYEVENTF_KEYUP,0);


键盘的原理是向操作系统的键盘驱动程序发送扫描码,下面的代码就是通过winio这个免费的lib实现直接向驱动程序发送数据来实现模拟按键。几乎试用于Windows下的所有程序。


有一点需要注意,对于扩展键需要额外发送命令。

   bool bResult;
   
   // Call InitializeWinIo to initialize the WinIo library.
   
   bResult = InitializeWinIo();//刚开始这个地方老是加载不成功,大家跑的时候如果不成功注意一下子这个地方
   
   if (bResult) {
       // Under Windows NT/2000/XP, after calling InitializeWinIo,
       // you can call _inp/_outp instead of using GetPortVal/SetPortVal
       
       UINT vkCode = MapVirtualKey(VK_LWIN, 0);
       
       KbcWait4Ibe();
       SetPortVal(0x64, 0xd2, 1); // 非扩展键不用写这条语句
       KbcWait4Ibe();
       SetPortVal(0x60, 0xe0, 1); // 非扩展键不用写这条语句


       KbcWait4Ibe();
       SetPortVal(0x64, 0xd2, 1);
       KbcWait4Ibe();
       SetPortVal(0x60, vkCode, 1);


       Sleep(5);
       
       KbcWait4Ibe();
       SetPortVal(0x64, 0xd2, 1); // 非扩展键不用写这条语句
       KbcWait4Ibe();
       SetPortVal(0x60, 0xe0, 1); // 非扩展键不用写这条语句


       KbcWait4Ibe();
       SetPortVal(0x64, 0xd2, 1);
       KbcWait4Ibe();
       SetPortVal(0x60, vkCode | 0x80, 1);


       ShutdownWinIo();
   }


刚开始自己加载WinIO驱动的时候老是不成功,给大家上传一个可以跑的,看看他的配置等内容。新版WinIO不大会用,大家可以试试这个老版的。

刚才上传居然上传正确但是没有找到,大家也可以自己搜索下载。有的是,主要是把那三个文件放好位置就可以了。


你可能感兴趣的:(游戏,windows,扩展)