【问题标题】:how do i send keystrokes to only one program?如何仅将击键发送到一个程序?
【发布时间】:2010-02-26 05:30:46
【问题描述】:

我一直很难找到任何有用的东西,但我发现有人问如何做到这一点,(How to send keystrokes to a window?)

如果使用代码,我可以设置记事本的文本,但我想发送密钥但设置文本,我 想发送 keybd_event 之类的密钥,我一直在使用它,但我只想让它发送到一个程序。

keybd_event('a', NULL, NULL, NULL);  
keybd_event('a', NULL, KEYEVENTF_KEYUP, NULL); 

我该怎么做?

【问题讨论】:

  • 我添加了 win32/windows 标签。如果windows不是操作系统,请重新编辑更新正确的。
  • (1) 您是否需要能够发送到任何程序,或者您是否有特定的程序集? (2) 你看过 AutoHotKey 吗?它是一个独立的应用程序(因此没有 C++ 接口),但它通常用于执行此类任务。
  • moron: xD tyvm 添加标签抱歉,我没有想到。 jdigital:只是我通过手柄选择的程序。 autoHotkey 我没有看过,但必须有某种方式我可以将它发送到一个程序。我的程序只是一个控制台窗口我并不真正关心该窗口,因为它什么都不做,我可能只是隐藏它,但 idk。
  • 程序是否接受标准输入的输入?如果是这样,那么您可以通过管道输入数据,而不是发送击键。

标签: c++ winapi sendkeys


【解决方案1】:

听起来您想在发送密钥之前使窗口成为焦点。看看FindWindowSetForegroundWindow

这样的事情应该可以工作:

SetForegroundWindow(FindWindow(0,"Untitled - Notepad"));
keybd_event(....);

如果您要直接更改窗口的文本,请查看 GetWindow 以导航窗口树,并使用 WM_SETTEXT 参数查看 SendMessage

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-20
    相关资源
    最近更新 更多