アプリ版:「スタンプのみでお礼する」機能のリリースについて

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

A 回答 (7件)

あとは位置くらいですかね。

判断材料は。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/22 14:54

「edit」とあるところからも、VC++等で作成された他アプリのWindowハンドルを取ってくる、というのが目的なのでしょうか?


そもそもTextBoxであればhwndプロパティがありますからこのような心配は無用ですからね(^^;

>2つのコントロールを区別することができません。

私なら、あまりスマートではないですが、editコントロールということでクライアント座標から判断しますね。
クライアント座標はOS環境やデスクトップサイズ等では変わりません(そういう仕様にしてあれば別の話ですが)から。
    • good
    • 0
この回答へのお礼

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

お礼日時:2004/09/22 14:54

コントロールID

この回答への補足

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

よろしくお願いします。

補足日時:2004/09/22 14:50
    • good
    • 0

コントロールIDに一票

    • good
    • 0

こんとろーるあいでぃ



参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=894824
    • good
    • 0

確かにControlIDでもよさそうですね(^^;



>具体的にControlIDを指定してハンドルを掴む行為はどのような、API?を使用すればよろしいのでしょうか?

#5さんが紹介しているGetDlgCtrlID()を使えばいいですね。
またはGetDlgItem()とか。
FindWindowEx()でコントロールのhwndを列挙しながら、GetDlgCtrlID()でコントロールIDをチェックしていく、と言う感じになると思います。
親ウインドウのHWND&コントロールIDが分かっていれば、GetDlgItem()でもOKだと思います。
    • good
    • 0

コントロールIDでも一意とは限らないんですけども。


staticコントロールなんて固定の文字列だったら慣例的に-1だし、意識的に同じコントロールID振ることも出来ます。

もちろん位置やサイズも一意になるかといわれると確実にはならないですけどね。
でもどちらが確実かといわれると位置になると思いますよ。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています