• ベストアンサー

他アプリのアクティブな子ウインドウを取得するには?

他人の作ったあるフリーソフトがあるのですが、そのソフトには、テキストボックスが2つ存在していて、そのうち、現在キー入力を受け付ける状態にある方のテキストボックスのハンドルを取得したいと思っています。 つまり、アクティブな子ウインドウを取得したいということなのですが、そのようなことは可能でしょうか? 自作ソフトならばなんとか分かるのですが、他人の作ったものでは無理なのでしょうか? APIのGetForegroundWindowでは、トップレベルウインドウしか求めることが出来ないようですし。 よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • Oh-Orange
  • ベストアンサー率63% (854/1345)
回答No.3

★アドバイス ・AttachThreadInput関数を利用します。  次のリンクを参考にして下さい。  http://homepage2.nifty.com/DSS/PT/HTML/VCPP/OTHER/OtherFocusWindow.htm→『フォーカスのあるウィンドウ』

参考URL:
http://homepage2.nifty.com/DSS/PT/HTML/VCPP/OTHER/OtherFocusWindow.htm
noname#208339
質問者

お礼

サンプルありがとうございます。 GetGUIThreadInfo を使った方法で出来ましたが、サンプルの方法でも確認したところ見事に取得できました。 どうもありがとうございました。

その他の回答 (2)

  • lesskey
  • ベストアンサー率33% (66/200)
回答No.2

VisualStudioに付属しているSpy++とかで そのソフト上のテキストボックスのクラス名を取得して FindWindow/FindWindowExとかでウィンドウハンドルを取得。 あとは煮るなり焼くなり出来るかも・・・

noname#208339
質問者

お礼

ありがとうございます。参考にさせていただきます。

  • jx-word
  • ベストアンサー率40% (38/94)
回答No.1

GetWindowThreadProcessIdでウィンドウのスレッドIDをとって、GetGUIThreadInfoでそのスレッドのウィンドウ情報が取れるようですね。 MSDNを読んだだけなんで実際にどう動くのかは分かりませんが。

noname#208339
質問者

お礼

GetGUIThreadInfo を使うことによって、フォーカスのある子ウインドウを、見事に取得するとこができました。 どうもありがとうございました。

関連するQ&A