c# - SendInput 到最小化的窗口

标签 c#

是否可以在当前没有焦点的窗口上使用 sendInput 函数,并且可能通过使用多线程,同时将输入发送到多个最小化窗口,或者在您工作时将输入发送到一个窗口另一个窗口?

我想在 C# 中做这样的事情

提前致谢。

最佳答案

您只能使用 SendInput 将输入发送到具有键盘焦点的 HWND。此外,窗口必须附加到调用线程的消息队列,因此也不能简单地 SetFocus

您需要使用 GetProcessIdOfThread 获取窗口的线程 ID .

当您拥有线程 ID 时,您可以使用 AttachThreadInput将您的线程附加到其他线程输入处理的函数。

完成所有这些之后,您可能可以使用 SetFocusSendInput

您可能希望在发送输入后分离线程。

要访问这些方法,您必须使用适用于 C# 或 C++/CLI 的 P/Invoke。 PInvoke.net作为引用非常方便。导入所有这些函数将是一件小事,但当您完成后,您应该能够将输入发送到您想要的任何“窗口”。

另请注意,我不确定您是否知道这一点,但在纯 Win32 中,所有内容都被视为一个窗口,甚至是一个按钮。如果您不走运,您可能必须将输入发送到属于记事本应用程序的文本控件的句柄。

关于c# - SendInput 到最小化的窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6165428/

相关文章:

c# - UWP 访问现有页面实例

c# - 数据库的位置?

c# - 从 C# 调用 tap_example.py 获取 Membase TAP Stream

c# - Entity Framework 上的内存泄漏

c# - 获取 OnActionExecuting 上的操作参数

c# - WPF GridViewColumn 对齐不起作用

c# - 如何填充区域以外的矩形

c# - .NET 正则表达式问题,还有 .NET 正则表达式使用不同的规则引擎?

c# - Generic Repository 是否需要一个 Base Entity 类才能在所有地方应用?

c# - 如何将 bool true 或 false 转换为字符串 "True"或 "False"