喫茶XRAYトップページ

[スレッド全体
]

[8687] 子ウィンドウの探索について返信 削除
2015/4/12 (日) 09:46:17 qwerty
はじめまして

 いつもMr.XRAYさんのサンプルプログラムで勉強させていただいており、
ありがとうございます。

 今回「Halbow 資料館 第6章 ウィンドウの階層について」を拝見しながら
いろいろ試しておるところですが、「6−5 子ウィンドウの探索」の
例にあるフォームでLabelが列挙されていないのに気付きました。
 自分の検証プログラムでも同様でしたが、Labelが検索対象から外れる理由が
あるのでしょうか。

[8689] Re:子ウィンドウの探索について返信 削除
2015/4/12 (日) 10:02:59 Mr.XRAY
▼ qwertyさん

> 例にあるフォームでLabelが列挙されていないのに気付きました。
>  自分の検証プログラムでも同様でしたが、Labelが検索対象から外れる理由が
> あるのでしょうか。


よくぞ訊いてくれました!!
こういうのを待っているんですよ,いつでも.

実はですね.コントロールにはウィンドウハンドルを持っているやつと,
そうでないやつがあるんです.
ウィンドウハンドルについての説明はちょっと置いていて.また機会があれば,

TLabel  --- ウィンドウハンドルなし
http://docwiki.embarcadero.com/Libraries/XE8/ja/Vcl.StdCtrls.TLabel

TButton -- ウィンドウハンドルあり
http://docwiki.embarcadero.com/Libraries/XE8/ja/Vcl.StdCtrls.TButton

この 2 つを見てみると,
TLabel は TGraphicControl
TButton は TWinControl
となっています.TWinControl がウィンドウハンドルを持つコントロールです.

で,本題ですが,ウィンドウ関係の Windows API で検出できるのは,
ウィンドウハンドルを持つコントロールだけなんです.
それで,そういう結果になりますです.
他に疑問や文句があれば,なんなりと.

# 当サイト,いや,喫茶XRAYにもサブスクリプション導入しようかな (笑)



[8693] Re2:子ウィンドウの探索について返信 削除
2015/4/12 (日) 13:51:20 qwerty
▼ Mr.XRAYさん
 ありがとうございます。

 それでは他のアプリケーションのGrpahicControlを検出して操作する
方法はあるのでしょうか。


[8694] Re3:子ウィンドウの探索について返信 削除
2015/4/12 (日) 19:51:51 Mr.XRAY
▼ qwertyさん

>  それでは他のアプリケーションのGrpahicControlを検出して操作する
> 方法はあるのでしょうか。


そのような専用の関数類はありませんね.
TForm を使用するアプリのプロジェクトで,フォームのコードを見てみてください.
拡張子は .dfm です.テキストエディタでみることができます.
IDE からも見ることができます.

EXE を作成すると,この情報がリソースとして EXE に埋め込まれます.
記憶では RC Data かなんかです.
ここから TLabel の情報を取り出して,操作することは可能かも知れません.
やったことはないですが.

例えば,アプリケーションマニフェストは以下のように取り出せます.
http://mrxray.on.coocan.jp/Delphi/plSamples/314_CreateAppManifest.htm#01

自アプリで,しかも,別途ストリームに保存したコンポーネントの場合です.
EXE のリソースもストリーム操作ですから,可能性はあります.
http://mrxray.on.coocan.jp/Delphi/plSamples/130_SaveComponent.htm#03

もし,他のアプリというのが,自分で開発するのであれば,
外部からのメッセージで取得や操作するような仕組みを作ることは可能です.


[8695] Re4:子ウィンドウの探索について返信 削除
2015/4/12 (日) 20:02:36 Mr.XRAY
> TForm を使用するアプリのプロジェクトで,フォームのコードを見てみてください.
> 拡張子は .dfm です.テキストエディタでみることができます.
> IDE からも見ることができます.


こういうのはリソースエディタで確認することがてきます.
また,EXE を展開してもみることができます.

[02_JEDI プロジェクトを使用したファイルの解凍・書庫展開]
http://mrxray.on.coocan.jp/Delphi/plSamples/744_JEDIArchiver.htm#fig6


[▼次のスレッド]
INCM/CMT
Cyclamen v3.82