1

これは C++ 翻訳プログラムにあります。ユーザーがCTRL-Cを押さずに他のプログラムでテキストを選択すると、強調表示されたテキストを取得して翻訳できるようにしたいと考えています。これ (テキスト取得) は比較的スタンドアロンのコンポーネントであるため、C# ソリューションは歓迎されます。

考えられる解決策の 1 つは、マウス イベントにフックを追加することです。次のメッセージを検出しました: 左ボタンを押したままマウスをドラッグしてから、左ボタンを放します。次に、プログラムに CTRL-C を送信し、クリップボードからテキストを取得します。

ほとんどのプログラムがこの方法でうまく機能するように、クリップボードを保存して復元します。しかし、いくつかのプログラムがメッセージ ループで WM_KEYUP のようなイベントを処理することを確認しました。これらのプログラムでは、偽のメッセージを送信します! 強調表示されたテキストを取得する別の安全な方法はありますか?

2 つのマウス カーソル位置の間のテキストを取得するための API 呼び出しを見つけようとしましたが、見つかりません。

4

1 に答える 1

1

別のプログラムの GUI インターフェイスとやり取りする Windows プログラムを作成する正しい方法は、UI オートメーションを使用することです。具体的には、UI Automation Clientを作成します。

少し手間がかかりますが、UI オートメーション ソリューションは他のほとんどすべてのアプリケーションで動作します。フックとメッセージで構築されたハッキーなソリューションも大変な作業になりますが、非常に脆弱です。特定のコンテキストで特定の種類のアプリケーションでのみ機能します。多くのことがうまくいかない可能性があります。

于 2013-08-30T16:45:14.687 に答える