我想向某个不是 Windows 中的活动应用程序的应用程序发送一个 pressKey 事件,所以我必须使用 sendMessage/postMessage api 调用。
但是,我需要知道在应用程序中处于活动状态的确切子窗口并向其发送 pressKey 消息...
我正在使用 GetTopWindow 和 GetWindow(GW_CHILD) api调用来获取主窗口的顶部子窗口,并使用获得的子窗口再次执行以获取顶部的孙子窗口,并继续这样做直到我找到一个没有更多子窗口的子窗口. 这对某些应用程序非常有用,但在某些情况下则不然。有时父窗口是活动窗口,而不是其子窗口之一,因此获取父窗口的顶部子窗口将不起作用,因为我将向错误的窗口发送消息。
我发现这样做的唯一方法(获取实际活动窗口的处理程序)是使用 GuiThreadInfo api 调用,但它仅在目标应用程序是 Windows 中的活动应用程序时才有效。正如我在开头提到的那样,处理程序并非如此。
我可以使用 setForegroundWindow api 调用将应用程序置于顶部,但我不想这样做。我还尝试了 AttachThreadInput 和 GetFocus api 调用,但同样,它们仅在目标应用程序是 Windows 中的活动应用程序时才有效。
有任何想法吗?谢谢