私のC#.Netアプリケーションでは、現在フォーカスされているウィンドウで現在選択されているテキストを取得できるようにしようとしています。 (これは、単語やサファリなどのウィンドウで開いているウィンドウでもかまいません)。C#では、現在フォーカスされているウィンドウの選択されたテキストコンテンツを一貫して取得できる方法はありますか?
現在フォーカスが設定されているコントロールのハンドルを取得できます。 (user32.dllとkernel32.dllに対するいくつかのinterop呼び出しを使用します)。
しかし、私は一貫して選択したテキストを返すことができませんでした。
私はSENDMESSAGEとGET_TEXTを使用しようとしました。しかし、これはいくつかのアプリケーション(ワードパッドのような単純なアプリケーションでは機能し、firefoxやwordなどのより複雑なアプリケーションでは機能しません)では機能するようです。
私はSENDMESSAGEとWM_COPYを使ってみました。しかし、もう一度これはいくつかのコントロールでのみ機能するようです。 (私は、WM_COPYは、手動でCTRL-Cを押すのと全く同じ動作を引き起こすと思いますが、そうではありません)。
私はSENDMESSAGEとWM_KEYUP + WM_KEYDOWNを使用して、手動でコピーコマンドを刺激しようとしました。これは常にうまくいくわけではありません。 (おそらく、ユーザーがアプリケーションを起動するために実際に押したホットキーと重複している可能性があります)。
現在選択されているテキストを一貫して取得できるアイデアはありますか? (任意のアプリケーションで)。
私の場合は、いつもテキストが選択されていると見なすことができます。 – vicsz