发送输入字符串?

SendInput strings?

所以我一直在尝试制作一个程序,将一串击键发送到当前打开的 window 并且每当我 运行 代码时,它都不会发送我想要的任何内容它发送它发送完全不同的东西(即发送 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;  
 }

(请原谅可怕的格式)

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

如果您阅读例如this MSDN reference for virtual key-codes you will see that e.g. lower-case 'a' (which has ASCII0x61) 对应 VK_NUMPAD1 即数字键盘上的 1 键。

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