Я хочу отправить событие pressKey определенному приложению, которое не является активным приложением в Windows, поэтому я должен использовать API-вызовы sendMessage / postMessage.
Однако мне нужно знать точное дочернее окно, которое активно в приложении, и отправить ему сообщение pressKey ...
Я использовал API-вызовы GetTopWindow и GetWindow (GW_CHILD), чтобы получить верхнее дочернее окно главного окна, и делал это снова с полученным дочерним окном, чтобы получить верхнее grandchildWindow, и продолжал делать это, пока не нашел дочернее окно с нет больше детских окон. Это прекрасно работает для некоторых приложений, но в некоторых случаях это не так. Иногда родительское окно является активным окном, а не одним из его дочерних окон, поэтому получение верхнего дочернего окна родителя не будет работать, потому что я отправлю сообщение не в то окно.
Единственный способ сделать это (получить обработчик действительного активного окна) - использовать вызов API GuiThreadInfo, но он работает, только если целевое приложение является активным в Windows. Как я уже упоминал в начале, обработчик не равен нулю.
Я могу вывести приложение наверх с помощью API-вызова setForegroundWindow, но я НЕ хочу этого делать. Я также попробовал API-вызовы AttachThreadInput и GetFocus, но опять-таки они работают только в том случае, если целевое приложение является активным приложением в окнах.
Есть идеи? Спасибо