【发布时间】:2010-11-16 06:56:30
【问题描述】:
我已经创建了一个向激活的窗口发送命令的应用程序。我希望能够在我的进程运行时使用计算机,因为一旦我将焦点切换到另一个窗口,通过发送键发送的击键将转到我刚刚切换到的窗口。
目前我使用 Windows API 中的 FindWindow、IsIconic 和 ShowWindow。我必须使用 FindWindow 检查窗口是否存在并将我的对象设置为该调用返回的特定窗口,然后检查它是否已使用 IsIconic 最小化并调用 ShowWindow 如果是,最后我必须调用Interaction.AppActivate 将焦点设置到该窗口。所有这些都是在我发送击键之前完成的。似乎应该有一种方法可以只发送击键而不必显示窗口并激活它。最重要的是,当我的应用程序运行击键时,我无法在计算机上执行任何操作。
【问题讨论】:
-
我使用的是 Windows Vista。我还在 C# 中使用带有 Visual Studio 2008 的 .NET 3.5 SP1 框架。
-
您不能将键盘输入定向到活动窗口以外的任何内容,这是有充分理由的。它们有点微妙,但它们就在那里。
-
我曾经在 Windows 上的 C++ 中做过类似的事情。我捕获了记事本实例的 HDC(设备上下文),并使用 SendMessage 将其输入镜像到另一个(非活动)记事本中。如果您有设备上下文,您甚至可以写入最小化的应用程序。
-
@Annie 这是一个旧线程,但您的回答似乎与我的需要非常相关。您的 HDC(设备上下文)捕获是否比 SendMessage 更可靠?将模拟输入发送到最小化窗口
标签: winapi sendmessage sendkeys keystroke