龙马谷

 找回密码
 立即注册

QQ登录

只需一步,快速开始

龙马谷VIP会员办理客服QQ:82926983(如果临时会话没有收到回复,请先加QQ好友再发。)
1 [已完结] GG修改器新手入门与实战教程 31课 2 [已完结] GG修改器美化修改教程 6课 3 [已完结] GG修改器Lua脚本新手入门教程 12课
4 [已完结] 触动精灵脚本新手入门必学教程 22课 5 [已完结] 手游自动化脚本入门实战教程 9课 6 [已完结] C++射击游戏方框骨骼透视与自瞄教程 27课
7 [已完结] C++零基础UE4逆向开发FPS透视自瞄教程 29课 8 [已完结] C++零基础大漠模拟器手游自动化辅助教程 22课
以下是天马阁VIP教程,本站与天马阁合作,赞助VIP可以获得天马阁对应VIP会员,名额有限! 点击进入天马阁论坛
1 [已完结] x64CE与x64dbg入门基础教程 7课 2 [已完结] x64汇编语言基础教程 16课 3 [已完结] x64辅助入门基础教程 9课
4 [已完结] C++x64内存辅助实战技术教程 149课 5 [已完结] C++x64内存检测与过检测技术教程 10课 6 [已完结] C+x64二叉树分析遍历与LUA自动登陆教程 19课
7 [已完结] C++BT功能原理与x64实战教程 29课 8 [已完结] C+FPS框透视与自瞄x64实现原理及防护思路
查看: 3088|回复: 0

SendInput代替keybd_event按键支持发送中文

[复制链接]

13

主题

2

回帖

20

积分

编程入门

Rank: 1

龙马币
54

SendInput比keybd_event要方便多了,可以支持发送中文。

  1. #include <atlconv.h>   
  2.   
  3. #pragma comment(lib,"User32.lib")  
  4. #pragma comment(lib,"shlwapi.lib")  
  5.   
  6. void SendAscii(wchar_t data, BOOL shift)  
  7. {  
  8.     INPUT input[2];  
  9.     memset(input, 0, 2 * sizeof(INPUT));  
  10.   
  11.     if (shift)  
  12.     {  
  13.         input[0].type = INPUT_KEYBOARD;  
  14.         input[0].ki.wVk = VK_SHIFT;  
  15.         SendInput(1, input, sizeof(INPUT));  
  16.     }  
  17.   
  18.     input[0].type = INPUT_KEYBOARD;  
  19.     input[0].ki.wVk = data;  
  20.   
  21.     input[1].type = INPUT_KEYBOARD;  
  22.     input[1].ki.wVk = data;  
  23.     input[1].ki.dwFlags = KEYEVENTF_KEYUP;  
  24.   
  25.     SendInput(2, input, sizeof(INPUT));  
  26.   
  27.     if (shift)  
  28.     {  
  29.         input[0].type = INPUT_KEYBOARD;  
  30.         input[0].ki.wVk = VK_SHIFT;  
  31.         input[0].ki.dwFlags = KEYEVENTF_KEYUP;  
  32.         SendInput(1, input, sizeof(INPUT));   
  33.     }  
  34. }  
  35.   
  36.   
  37. void SendUnicode(wchar_t data)  
  38. {  
  39.     INPUT input[2];  
  40.     memset(input, 0, 2 * sizeof(INPUT));  
  41.   
  42.     input[0].type = INPUT_KEYBOARD;  
  43.     input[0].ki.wVk = 0;  
  44.     input[0].ki.wScan = data;  
  45.     input[0].ki.dwFlags = 0x4;//KEYEVENTF_UNICODE;  
  46.   
  47.     input[1].type = INPUT_KEYBOARD;  
  48.     input[1].ki.wVk = 0;  
  49.     input[1].ki.wScan = data;  
  50.     input[1].ki.dwFlags = KEYEVENTF_KEYUP | 0x4;//KEYEVENTF_UNICODE;  
  51.   
  52.     SendInput(2, input, sizeof(INPUT));  
  53. }  
  54.   
  55. //为方便使用,下面这个函数包装了前两个函数。  
  56. void SendKeys(TCHAR *strMsg)  
  57. {  
  58.     short vk;  
  59.     BOOL shift;  
  60.   
  61.     USES_CONVERSION;  
  62.     wchar_t* data = T2W(strMsg);  
  63.     int len = wcslen(data);  
  64.   
  65.     for(int i=0;i<len;i++)  
  66.     {  
  67.         if (data[i]>=0 && data[i]<256) //ascii字符  
  68.         {  
  69.             vk = VkKeyScanW(data[i]);  
  70.   
  71.             if (vk == -1)  
  72.             {  
  73.                 SendUnicode(data[i]);  
  74.             }  
  75.             else  
  76.             {  
  77.                 if (vk < 0)  
  78.                 {  
  79.                     vk = ~vk + 0x1;  
  80.                 }  
  81.   
  82.                 shift = vk >> 8 & 0x1;  
  83.   
  84.                 if (GetKeyState(VK_CAPITAL) & 0x1)  
  85.                 {  
  86.                     if (data[i]>='a' && data[i]<='z' || data[i]>='A' && data[i]<='Z')  
  87.                     {  
  88.                         shift = !shift;  
  89.                     }  
  90.                 }  
  91.   
  92.                 SendAscii(vk & 0xFF, shift);  
  93.             }  
  94.         }  
  95.         else //unicode字符  
  96.         {  
  97.             SendUnicode(data[i]);  
  98.         }  
  99.     }  
  100. }  

  101. int _tmain(int argc, _TCHAR* argv[])  
  102. {  
  103.     Sleep(5000);  
  104.     SendKeys(L"Sysprogram 测试中文");  
  105.     return 0;  
  106. }  
复制代码

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

龙马谷| C/C++辅助教程| 安卓逆向安全| 论坛导航| 免责申明|Archiver|
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表龙马谷立场!
任何人不得以任何方式翻录、盗版或出售本站视频,一经发现我们将追究其相关责任!
我们一直在努力成为最好的编程论坛!
Copyright© 2018-2021 All Right Reserved.
在线客服
快速回复 返回顶部 返回列表