FindWindowExを使用してHWNdを取得したい

解決


ta  2003-12-08 03:43:22  No: 5970

FindWindowExを使用してHWNdを取得したいのですが、同一のクラスの2個目以降の値が旨く取れません。
ご存知の方よろしくお願いいたします。

000202D8 (#32770) "ローカル エリア接続の状態"
-00010320 (#32770) "サポート"
--00010322 (Button) "インターネット プロトコル (TCP/IP)"
--00010324 (Static) "アドレスの種類:"
--00010326 (Static) "DHCP による割り当て"<---これが取りたい値です。


たかみちえ  URL  2003-12-08 06:05:04  No: 5971

#32770は、一般ダイアログのクラス名なので、普通いくつでも存在します。
なのでこの場合、別の#32770というクラス名を持ったダイアログを、取得してしまったのではないでしょうか?

  この場合キャプションが決まってるので、キャプションも使って絞り込んでみては?
(さもなくばEnumWindowsで探すという方法もありますけど)


ta  2003-12-08 07:40:30  No: 5972

すみません質問が下手で、申し訳ございません。<m(__)m>

一つ目の(Static)"アドレスの種類"までは取得できるのですが、二つ目の(Static)""が取得できません。

親ウインドウは取得できるのですが子ウィンドウのクラスが同じのがいっぱいあって、、、、、、よろしくお願いいたします。


ta  2003-12-08 07:49:02  No: 5973

すみません質問が下手で申し訳ございません。<m(__)m>
追伸です。

 HWNd1:=FindWindow(nil,'ローカル エリア接続の状態');
 HWNd2:= FindWindowEx(HWNd1,0,'#32770',nil);
 HWNd3:= FindWindowEx(HWNd2,0,'Static',nil);
 HWNd4:= FindWindowEx(HWNd2,0,'Static',nil);    <m(__)m><-----ここのハンドルが取得したいのです。2個目の(Static)のハンドルは無理ですか?


たかみちえ  URL  2003-12-08 07:57:21  No: 5974

同様の理由では?
FinderSystem( http://www.h3.dion.ne.jp/~hanagex/ )の、ウィンドウリストなどで、詳しく検証してみる理由があると思いますよ。
  それと、FindWindowExの解説もお読みください、第二引数が使えるかもしれません。
http://www.microsoft.com/japan/msdn/library/ja/jpwinui/html/_win32_findwindowex.asp

  ところで、キャプションが固定なのならそれだけで最後まで検索できませんか?


ta  2003-12-08 08:32:46  No: 5975

キャプションは固定ではないです。
本当に質問が下手ですみません。<m(__)m>

例が(Static)でしたが自分でわかりやすかったので選びました。
またMSのサイトをありがとうございます。
下記の文を見ると「子ウィンドウの直後の子ウィンドウから開始されます。」とありますが、ウィンドウ名のわからない同一クラスは直後のみ検索できるのでしょうか?それとも次が見れるのでしょうか?
よろしければ教えていただけますでしょうか。

*****
指定された文字列と一致するクラス名とウィンドウ名文字列を持つウィンドウのハンドルを返します。この関数は、子ウィンドウを検索します。この関数による検索は、指定された子ウィンドウの直後の子ウィンドウから開始されます。大文字小文字は区別されません。
*****


ta  2003-12-08 08:38:57  No: 5976

大変失礼いたしました、
できました。\(^o^)/

hwndChildAfterが間違っておりました。

たかみさん、ありがとうございました。
<m(__)m>

又、下手な質問で申し訳ございませんでした。
これに懲りずに又よろしくお願いいたします。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加