SendInput字符串?

时间:2016-07-09 16:25:31

标签: c++ string sendmessage sendinput

所以我一直在尝试制作一个程序,将一串击键发送到当前打开的窗口,每当我运行代码时,它都不会发送我想要的任何内容发送它发送的东西完全不同(即发送bob为22或2/2)

 #include <iostream>
 #include <vector>
 #include <Windows.h>


 int SendKeys(const std::string &msg);

int main() {
 Sleep(5);
 while(true) {
      Sleep(500);
      SendKeys("iajsdasdkjahdjkasd");
}
      std::cin.get(); 
return 0;
}


int SendKeys(const std::string & msg)
{
   std::vector<INPUT> bob(msg.size());

 for(unsigned int i = 0; i < msg.size(); ++i)
 {
  bob[i].type = INPUT_KEYBOARD;
  bob[i].ki.wVk = msg[i]; 
  std::cout << bob[i].ki.wVk << std::endl;
  auto key = SendInput(1, &bob[i], sizeof(INPUT) /* *bob.size() */);


 }
    return 0;  
 }

(原谅可怕的格式化)

1 个答案:

答案 0 :(得分:2)

虚拟键码通常不对应ASCII字母。

如果您阅读例如this MSDN reference for virtual key-codes你会看到,例如小写'a'ASCII0x61)对应VK_NUMPAD1,这是数字键盘上的1键。

大写的ASCII字母确实对应于正确的虚拟键码,因此在分配给bob[i].ki.wVk时,您需要将所有字母设为大写字母。对于所有其他符号和字符,您需要将字符转换为虚拟键代码。