現在フォーカスのある入力部のハンドルを得るには?

解決


アルファ  2007-06-14 10:45:41  No: 26627  IP: [192.*.*.*]

例えばフォーカスのあるメモ帳(のウィンドウ)のハンドルを得るには、GetActiveWindowや
GetForegroundWindowで事足りるのですが、その中のEdit部分のハンドルを得る方法が
分かりません。

仮にメモ帳だと分かってるならFindWindowEXでクラス名を指定してやれば行けますが、一般にフォーカス
を現在持っている入力部位のハンドルを得る方法です。(例えばIEの検索窓とか)

お分かりの方、よろしくお願いします。

編集    削除
あれ  2007-06-14 14:19:14  No: 26628  IP: [192.*.*.*]

GetForegroundWindow  と  AttachThreadInput と  GetFocus  を組み合わせると
ハンドルが取れる、とMSDNには書いてますね。

編集    削除
Fusa  2007-06-15 09:52:22  No: 26629  IP: [192.*.*.*]

GetFocusWindowでハンドルが得られるのではないでしょうか。

編集    削除
mmm  2007-06-15 16:25:23  No: 26630  IP: [192.*.*.*]

IEの検索窓とかはダメかな
http://www2.big.or.jp/~osamu/Delphi/delphi-browse.cgi?index=030830

編集    削除
n  2007-06-16 06:37:33  No: 26631  IP: [192.*.*.*]

普通はGetGUIThreadInfo()で取得できますが、ウェブブラウザの
コントロールはウィンドウハンドルを持っていなかったりもします

編集    削除
アルファ  2007-06-16 07:02:44  No: 26632  IP: [192.*.*.*]

mmmさんのリンク先のものでそのまま上手くいきました。
皆さん、ありがとうございました。

編集    削除
アルファ  2007-06-16 07:09:14  No: 26633  IP: [192.*.*.*]

あ・・・書き込みが。
なるほど、ハンドルはフォーカスを持てるもの全てが持っているわけでは
ないのですね。勉強になりました。

編集    削除
アルファ  2007-06-16 17:24:41  No: 26634  IP: [192.*.*.*]

チェック入れ忘れました

編集    削除