• 締切済み

ウインドウハンドルのつかみ方について質問です。

visualbasic6.0で開発をしています。 例えば、同親内の子コントロールに同じ「edit」クラスが2つ存在していたとします。 私は、ハンドルを掴むのにクラス名とキャプション名で掴んでいます。 しかし、クラス名は一緒で、キャプション名は存在しません。 すると、2つのコントロールを区別することができません。 現在は、FindWindowExで取得したハンドルを、アプリケーション「spy」等であっているか確認しています。 上記のような、クラス名とキャプションで判断できないものは、皆さんどのようにハンドルを取得していますか? 自分のように順次取得して、順番で判断していますか? だとしたら、FindWindowExで取得した順番はOS環境や、取得する時々で変わったりしないモノなのでしょうか? よろしくお願いします。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.7

コントロールIDでも一意とは限らないんですけども。 staticコントロールなんて固定の文字列だったら慣例的に-1だし、意識的に同じコントロールID振ることも出来ます。 もちろん位置やサイズも一意になるかといわれると確実にはならないですけどね。 でもどちらが確実かといわれると位置になると思いますよ。

  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.6

確かにControlIDでもよさそうですね(^^; >具体的にControlIDを指定してハンドルを掴む行為はどのような、API?を使用すればよろしいのでしょうか? #5さんが紹介しているGetDlgCtrlID()を使えばいいですね。 またはGetDlgItem()とか。 FindWindowEx()でコントロールのhwndを列挙しながら、GetDlgCtrlID()でコントロールIDをチェックしていく、と言う感じになると思います。 親ウインドウのHWND&コントロールIDが分かっていれば、GetDlgItem()でもOKだと思います。

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.5

こんとろーるあいでぃ

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=894824
  • 2ch
  • ベストアンサー率51% (64/125)
回答No.4

コントロールIDに一票

  • todo36
  • ベストアンサー率58% (728/1234)
回答No.3

コントロールID

HITPOINT100
質問者

補足

自アプリ以外のアプリケーションのハンドルを掴みたいのですが、具体的にControlIDを指定してハンドルを掴む行為はどのような、API?を使用すればよろしいのでしょうか? よろしくお願いします。

  • piyo2000
  • ベストアンサー率49% (144/293)
回答No.2

「edit」とあるところからも、VC++等で作成された他アプリのWindowハンドルを取ってくる、というのが目的なのでしょうか? そもそもTextBoxであればhwndプロパティがありますからこのような心配は無用ですからね(^^; >2つのコントロールを区別することができません。 私なら、あまりスマートではないですが、editコントロールということでクライアント座標から判断しますね。 クライアント座標はOS環境やデスクトップサイズ等では変わりません(そういう仕様にしてあれば別の話ですが)から。

HITPOINT100
質問者

お礼

やっぱりあとは座標ですかねぇ

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

あとは位置くらいですかね。判断材料は。

HITPOINT100
質問者

お礼

やっぱりあとは座標ですかねぇ ありがとうございます

関連するQ&A