【问题标题】:C++ Simulate keypressC++ 模拟按键
【发布时间】:2020-04-29 15:14:20
【问题描述】:

我是 C++ 新手,不知道如何模拟按键。 我想变成这样:

if(GetAsyncKeyState(0x52))
    {
        //(Make program simulate the press of number "3" key (0x33) 
    }

当我点击键盘上的“R”键时,我希望程序模拟按键数字 3 (0x33)

【问题讨论】:

  • 用什么方式模拟?更清楚您想要发生的事情、时间、原因以及尝试时出了什么问题。
  • 我希望程序为我按下“3”键。正如我在描述中所说,我无法找到一种方法来实现它,所以没有出错
  • 好吧,这并没有真正澄清任何事情。您还没有解释您想要的效果,或者您打算在这种情况下“按下”意味着什么,或者您希望程序“何时”执行此操作以及为什么。恐怕,除非您能详细说明您的要求,否则我们无法为您提供帮助。你也应该先研究/尝试一些东西。
  • 我编辑了帖子 idk 如何更好地解释它。
  • 你只是重复了同样的几个词。解释你想要完成什么。你的目标是什么?你想在屏幕上看到什么?模拟按键会做什么?提供详情!!如果你不知道你的程序应该做什么,那我们怎么知道呢?

标签: c++ winapi keyboard


【解决方案1】:

您可以使用SendInput() 来生成击键事件,就像在键盘上键入一样。您可以在this SO question 找到更多实用信息。

您也可以尝试SetKeyboardState(),但这只会影响当前线程。您可以在this SO question and its answers 中找到更多信息。

【讨论】:

  • 我看到了关于 SendInput 的帖子,但仍然不明白如何使用它:I
  • @Gurk 到底是什么问题?它创建一个空事件,然后生成一个按键事件,然后是一个释放键事件。就像您按下键盘上的键一样。试试vkCode = 0x33;
  • 除了,它做到了wrong。
  • @IInspectable 和 setkeyboardstate 在那种情况下?
  • SetKeyboardState 修改同步的每线程键盘输入状态表。除非您在该线程上运行外部代码,否则您只是在恶作剧地打电话给自己。您可以更轻松地完成后者,甚至无需打扰系统,只需使用变量,例如 bool pretendMagicKeyIsPressed{};。
猜你喜欢
  • 2011-03-04
  • 2011-11-10
  • 2012-02-15
  • 2021-03-07
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多