テキスト分析を含む .NET アプリを開発しています。
現在フォーカスされているウィンドウのアクティブなテキスト ボックスからテキストを取得したいと思います。そして、できればWindowsカーソルの場所から
これはプロセスとは独立している必要があります。つまり、ユーザーが Word で書いている場合、カーソルの位置の「近く」で入力された単語を取得したいと考えています。Chrome や IE の URL などでも同様です。
.NETでこれに対する良い解決策を知っている人はいますか?
良い出発点は、マウスが上にあるというコントロールを取得することです。これは次のように実行できます。
[DllImport("user32.dll")]
static extern IntPtr ChildWindowFromPoint(IntPtr hWndParent, Point Point);
[DllImport("user32.dll")]
static extern IntPtr WindowFromPoint(Point Point);
[DllImport("user32.dll")]
static extern bool ScreenToClient(IntPtr hWnd, ref Point lpPoint);
//...
Point p = Cursor.Position;
IntPtr phwnd = WindowFromPoint(Cursor.Position);
ScreenToClient(phwnd, ref p);
IntPtr hwnd = ChildWindowFromPoint(phwnd, p);
そこから、ここで回答したのと同様の方法でコントロールからテキストを取得できます。