Controlで一意なモノとは? – プログラミング – Home

Controlで一意なモノとは?
 
通知
すべてクリア

[解決済] Controlで一意なモノとは?


直人
 直人
(@直人)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

他アプリのGUIを自動制御するようなアプリを考えています。

お決まりのFindWindow等で判別はできるのですが、
この手のアプリは、一般的に、
何を一意のキーとして判別しているのでしょうか?

マウスの位置は画面サイズで変更されてしまいますし、
Handle系は毎回違う値でしょうし、
ClassNameは例えばボタンは全て同じもので判別できません。
Captionは、多言語の場合対応できません。

何か、オブジェクトID的なものがあれば良いのですが、
.Netで設定する「Name」プロパティは、
そのアプリ内部でしか取得できないようなので・・・

やはり、ある程度は妥協するのが一般的なのでしょうか?
(例えば、ClassName+Captionで判定し、
 文字が変わった場合は仕方ない、のような)


引用未解決
トピックタグ
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

ZORDERとか。
EnumChildWindowsとかFindWindowExとかを使えば、同じクラス名、キャプション名であ
っても列挙される順番で特定できます。


返信引用
麩
 麩
(@麩)
ゲスト
結合: 17年前
投稿: 95
 

GetDlgCtrlIDという手段もあります。
用途はダイアログに限定されますが、同じクラスを持ったウィンドウ同士の判別の
多くはダイアログかと思いますので多少は有効かと思います。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

他のアプリケーションの場合に対して何処までコントロールしたいのかというのが
良く分からないので外しているかもしれませんが、自分以外のアプリケーションの
構成は知りようが無いと言うか、どういう意図でそのコントロールが配置されたかは
知りようが無いと思います。
そういう意味では汎用的にコントロールすると言うこと自体に無理があるような
気がします。ある程度のコントロールをする事は出来てもかなり妥協する必要が
あるのではないかと思います。

結局の話、キャプションを変えるのもIDを変更するのもアプリを作る側の勝手なわけで
画面上のレイアウトを変えられたりすれば、結局同じことかなと思いますし。


返信引用
直人
 直人
(@直人)
ゲスト
結合: 17年前
投稿: 2
Topic starter  

皆様ありがとうございます。

PATIO様の指摘はまさにそのとおりで、
結局、誰が作ったか不明なアプリは、
そっちが変わってしまうとどうしようも無いので「妥協」は避けられません。

ヘルプ等を見たら、
Win32ベースではCaptionが一意のような事が書かれており、
これが1つの基準のようです。

とりあえず解決とします。
コメントして頂いた方、ありがとうございました。


返信引用
Blue
 Blue
(@Blue)
ゲスト
結合: 20年前
投稿: 1467
 

> Win32ベースではCaptionが一意のような事が書かれており、
ってどこに書かれていましたか?

ここでおっしゃるCaptionとは?


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました