是否可以在当前没有焦点的窗口上使用 sendInput 函数,并且可能通过使用多线程,同时将输入发送到多个最小化窗口,或者在您工作时将输入发送到一个窗口另一个窗口?
我想在 C# 中做这样的事情
提前致谢。
最佳答案
您只能使用 SendInput
将输入发送到具有键盘焦点的 HWND。此外,窗口必须附加到调用线程的消息队列,因此也不能简单地 SetFocus
。
您需要使用 GetProcessIdOfThread
获取窗口的线程 ID .
当您拥有线程 ID 时,您可以使用 AttachThreadInput
将您的线程附加到其他线程输入处理的函数。
完成所有这些之后,您可能可以使用 SetFocus
和 SendInput
。
您可能希望在发送输入后分离线程。
要访问这些方法,您必须使用适用于 C# 或 C++/CLI 的 P/Invoke。 PInvoke.net作为引用非常方便。导入所有这些函数将是一件小事,但当您完成后,您应该能够将输入发送到您想要的任何“窗口”。
另请注意,我不确定您是否知道这一点,但在纯 Win32 中,所有内容都被视为一个窗口,甚至是一个按钮。如果您不走运,您可能必须将输入发送到属于记事本应用程序的文本控件的句柄。
关于c# - SendInput 到最小化的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6165428/