2012-01-28 9 views
3

UI以外のオートメーション要素を含むウィンドウの選択テキストを取得することはできますか? プロセスの現在フォーカスされている要素の現在の内容の選択されたテキストを取得できます。UI以外のオートメーション要素を含むウィンドウの選択テキストを取得することはできますか?

私はこれを行うためにUIオートメーションを使用するさまざまな例を見てきましたが、これは確かに最近.NETで開発されたアプリケーションと同じように機能します。私はどの窓のテキストも手に入れることができる必要があります。

辞書のように振る舞い、Windowsのどこかでマウスを使ってテキストを表示すると、定義付きのツールチップが表示されることがあります。これはC#& .NETで実現できますか?

私はWinSpyを使ってUIAで動作しないように見えるウィンドウの内容を検査していましたが、ApplicationIdは空または ""として表示されます。私はこの特定の要素がUIAによってサポートされていないと推測しています。私はNotepad ++でテストしたところ、Scintillaを使用していることにも気がつきました.SintillaもUIAで動作していないようです。

誰かが他の方法でこれを行う信頼できる方法を示すことができたなら、私は自分のアプリにハイブリッドアプローチを使うことができました。 UIAフレームワークを使用します。結果が得られない場合は、別の方法に戻ります。

+3

信頼できる方法は100%ありません。 –

+0

別のプログラムから情報を抽出するには、他のプログラムからの協力が必要です。 (考えてみてください:あなたの*プログラムから別のプログラムがどのように情報を抽出するのでしょうか?)テキストコンテンツを表示する標準的な方法は、MSAAまたはUIオートメーションです。 –

+0

Win32ApiまたはWindowsフックの使用はどうですか?とにかくこれを使うことができますか? – jaffa

答えて

1

これを達成する簡単な方法の1つは、CTRL + Cのキーコードを選択したウィンドウに送信して、選択したテキストをクリップボードで見つけることです。これは実装が非常に簡単です。他のプロセスにキーを送信する場合はhere、クリップボードを読み取る場合はhereを参照してください。欠点は、明らかにクリップボードの内容を失うことです。もっと固い解を探したらcheck this question

+6

さらに深刻な問題:プログラムがコピー以外のものにCtrl + Cを使用している場合、問題が発生しています。例えば。 Ctrl + Cをコンソールプログラムに送ると、通常はそれを終了します。 –

関連する問題