发送输入字符串?
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 ASCII 值 0x61
) 对应 VK_NUMPAD1
即数字键盘上的 1
键。
大写 ASCII 字母确实对应了正确的虚拟键码,因此在分配给 bob[i].ki.wVk
时需要将所有字母设为大写。对于所有其他符号和字符,您需要将字符转换为虚拟键码。
所以我一直在尝试制作一个程序,将一串击键发送到当前打开的 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 ASCII 值 0x61
) 对应 VK_NUMPAD1
即数字键盘上的 1
键。
大写 ASCII 字母确实对应了正确的虚拟键码,因此在分配给 bob[i].ki.wVk
时需要将所有字母设为大写。对于所有其他符号和字符,您需要将字符转换为虚拟键码。