【发布时间】:2019-12-27 09:33:19
【问题描述】:
我正在尝试编写一个程序,当您键入“Alt+A”时,它会写出例如“Hello”之类的行。这是我得到的最接近的:
if (GetAsyncKeyState(65))
{
cout << "worked" << std::endl;
string bind = "Hello";
INPUT Input = { 0 };
Input.type = INPUT_KEYBOARD;
for (int i = 0; i < bind.length(); i++)
{
Input.ki.wVk = VkKeyScanA(bind[i]);
SendInput(1, &Input, sizeof(Input));
}
Sleep(500);
}
它的工作方式与我想要的类似,但是我遇到了一些问题:
- 我无法使用 Alt 键。当我使用 GetAsyncKeyState(18) 时,它会运行“工作”输出,但不会输入任何单词。
- 每当我按下键绑定(例如“A”)时,它也会键入那个字母。有什么办法可以取消那个按键吗?我在想我可以让它在单词之前键入退格按钮,但我假设有更好的方法。
- 我还有一个问题是程序没有准确输入输入的内容。它不输入大写字母,如果连续两个字母,它只会输入一个字母。在我输入的代码中,它会说“helo”而不是“Hello”。
【问题讨论】:
-
只是一个快速的术语问题,标题中的“macro”一词让我大吃一惊。对于一些 C++ 开发人员来说,这意味着一些非常不同的东西:)
-
我在查找如何制作这个时看到了这一点。我应该改变措辞吗?而是键入 Bot 或 Script?
-
另外,您似乎正在使用
std命名空间,这可以lead to problems。抱歉,我正在回答您没有提出的所有问题,而不是您所提出的问题;) -
我不会改变措辞,只是要注意一些事情!
-
我用于SendInput的教程使用了它。我通常不带它。