質問: 今までRPAソフトウェアを使用し、テキストボックスからのテキストの抽出を行っていましたが、 タイトルのような必要性が発生しました。 テキストを抽出したいソフトウェアは、独自のコントロールを使用しているようで、 Visual StudioのSpy++で調べるとクラスはCustomと表示されます。 ただ、リアルタイムで表示テキストの内容は変わるため、 それをイベントとして、更新テキストをキャッチするようなことが C++またはC#で可能でしょうか。
回答: 出来るようですね。SetWinEventHook function と、WinEvents というのを使うようです。 使えるイベント Event Constants この辺の記事が参考になるでしょう。 オリジナル Setting up Hook on Windows messages / 翻訳 c# – Windowsメッセージにフックを設定する 日本語の記事の例 Windowsのイベントを拾う その他にこんな記事も。 Window Title Changed Event asynchronously GetForegroundWindow via SendMessage or something? Log all Windows that are Closed in Windows ウインドウハンドルが分かっていて、タイミングは気にしないなら、このAPIで取れるのでは? GetWindowTextLengthW function / GetWindowTextW function **追記** 他プロセスの場合はSendMessageでWM_xxxxを送る必要がありましたね。 他アプリのウインドウ内の文字列を取得するには WM_GETTEXTLENGTH message / WM_GETTEXT message ただし対象アプリがハングアップしていないかどうかは気を付ける必要があるようです。 他のウィンドウのテキストの取得 他にこんな注意も。 SendMessageのWM_GETTEXTとWM_GETTEXTLENGTHで大幅に文字数が異なる