0

我有一个非常基本的问题,对于一个游戏(Dota 2)我想写一个打开控制台的小宏,写“setinfo name”...... ......."" 进入它然后关闭它,控制台的热键设置为'#'。为此,我编写了一个应用程序,它侦听要按下的键“f”,然后发送

1) '#' (open the console)
2) "messag ebla bla b...."
3) '#' (close the console)

一切正常,只是它不会打开控制台(但如果控制台已经打开,它会在我按 f 键时将 #messagej.j....# 写入其中)

我发送密钥的代码。

SendKeys.Send("#");
SendKeys.Send("my message for consol");
SendKeys.Send("#");

有人知道为什么热键不能通过发送密钥来工作吗?我认为这是对用户按下 F 或 Q 时的模拟。

4

1 回答 1

0

您应该尝试的第一件事是在按键之间添加“软件”延迟。

string MSG = "#yourmessage#";
foreach (object c_loopVariable in MSG) {
    c = c_loopVariable;
    Sendkeys.Send(c);
    sleep(20);

}

另一件要考虑的事情 - sendkeys 不会在硬件层模拟按键 - 它在 Windows API 级别,而 DirectX DirectInput.,大多数用于用户输入处理的游戏都更进一步。因此,您可能无法如此轻松地做到这一点。

您应该查看更多的 keybd_event。我使用它的运气更好——据我所知,它比发送键更深层次。

http://msdn.microsoft.com/en-us/library/windows/desktop/ms646304(v=vs.85).aspx

无论如何,我希望你不会在一款出色的游戏中使用它来发送垃圾邮件!:)

于 2012-12-27T13:31:14.857 回答