解決方法
他のプロセスに対して働きかける方法ではありません。
実行ファイルを自作のプログラムから参照しています。そのためElementHostインスタンスへの参照を他プロセスから取得する部分はありません。
ElementHost.Child
プロパティを利用することで実現できました。
私の場合は以下のような流れで取得できました。
c#
1// この行まででObject controlとしてElementHostのインスタンスが存在するとします。 2 var eh = (System.Windows.Forms.Integration.ElementHost)control; 3 var cc = (System.Windows.Controls.ContentControl)eh.Child; 4 var pa = (System.Windows.Controls.Panel)cc.Content; // Gridである場合もあるかもしれませんね。 5 System.Windows.Controls.UIElementCollection children = pa.Children; 6 // なお、確実にChildrenの第1要素がButtonである場合は以下のように取得できています。 7 var button = (System.Windows.Controls.Button)children[0];
まんまこのページで見た書き方を利用しています。
前提・実現したいこと
他プロセスのプログラムに配置されたElementHost
に含まれるコントロールを取得したい。
いま、自分が開発したC#プログラムから他社が開発したC#プログラムを自動的に操作しようとしています。
Text
プロパティやName
プロパティで得られる情報(以下情報と呼びます)を読み込めていますが、ElementHost
なるコントロールに含まれるコントロールについては一切手出しが出せない状態です。
宜しくお願いいたします。
該当のソースコード
なお事情により余り詳しくコードを載せるわけにはいかないので雰囲気をつかんでいただける程度の内容に限られます。
c#
1for each(var f in Application.OpenForms) 2{ 3 if( f.Name != "uitarget") // 仮にuitargetというNameのフォームになっている事にします 4 { 5 continue; 6 } 7 8 for each( var c in f.Controls) 9 { 10 for each( var c_child in c.Controls) // このようにループをまわしてもElementHost.Controlsの要素数は0のようです 11 { 12 // テキストファイルとかに情報を書き出す処理 13 } 14 } 15}
発生している問題・エラーメッセージ
性質について余り理解できていないので確証は無いのですが、おそらくElementHost
内にあるコントロールのみ走査が達していないのだと思います。
今、情報が得られないTextBox
やButton
と思われるコントロールはそれらが確実にフォームデザイナーで配置するようなコントロールである確証がない事はご協力いただく皆様には白状しておこうと思います。
というのも自動的に操作しようとするソフトはお客様のマシンにインストールされていて、なおかつSpy++に類するソフトを利用しようにも外部ソフトのインストールは上司より忌避するよう指示されているためです。また開発マシンに入れて動作させるのは仕様上不可能です。
試したこと
例えばTableLayout
コントロールに含まれるコントロールはControls
プロパティで得られるのでElementHost
においても同様だと思ったのですがうまくいかず、他の方法を探したもののElementHost
についてイマイチ理解が及ばず作業が進まずにいます。
ElementHost.Child
プロパティにも興味が惹かれたのですがこれによって得られるUIElement
を役立てる方法が分からず現在使用していません。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
- Visual Studio 2015 SP1
- Windows 7 64bit(開発環境)
- Windows 10(実行環境)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2019/11/05 00:23
2019/11/05 00:36
2019/11/05 00:40
退会済みユーザー
2019/11/05 02:18
退会済みユーザー
2019/11/05 07:16 編集
2019/11/05 07:57
退会済みユーザー
2019/11/05 08:17
2019/11/05 08:58
退会済みユーザー
2019/11/13 03:07