2

具体的には、プログラムが実行されており、プログラム内のテキスト ボックスからテキストを抽出したいと考えています。

一般に、システムで実行されている別の .exe を「内部に取り込み」、C++ を使用してその中のテキスト ボックスからデータを抽出するには、どの方法/トピックを使用する必要がありますか?

これを達成する方法へのポインタが欲しいだけです。ありがとう。

4

3 に答える 3

4

GUIアプリケーション(Windows固有)を「内部に入れる」ためのもう1つの一般的な手法は、DLLインジェクション+Windowsサブクラス化です。これはおそらく、「Windows Via C /C++」という主題に関する優れた本をプログラミングするやや高度なウィンドウと見なされます。これが本質的に何であるかについての簡単な考え:

  1. カスタムDLLをターゲットプログラムのアドレス空間に挿入します。
  2. ターゲットテキストボックスのHWNDを見つけます。
  3. このテキストボックスの変更/編集に関連する関数をサブクラス化します。
  4. これで、誰かが編集/テキストが変更されるたびに、最初に関数が呼び出され、テキストを表示/操作できるようになります。通常のハンドラーに転送しないように選択することもできます。

また、上記で言及したことは、「ウィンドウのハッキング」ではないことにも注意してください。これは、Microsoftによって意図的に実装された明確に定義された動作です。実際には、MSDNで非常によく文書化されています。

これを実行したい場合は、「Windowsサブクラス化」と「フックの設定」を参照してください。

于 2009-07-12T01:33:29.547 に答える
4

テキストを取得したい特定のウィンドウに対してEnumChildWindowsSendMessageを使用するだけです。WM_GETTEXT

于 2009-07-12T01:19:14.727 に答える
0

@DeusAduro によって言及されたインジェクトとサブクラスのテクニックの説明と、GDI テキストのフックなど、同じための他のいくつかのテクニックについては、動作するオンライン ポーカー ボットの構築方法: サードパーティ アプリケーションからのテキストの抽出を参照してください。出力 API。もちろん、標準のテキスト ボックスの場合は、いつでも WM_GETTEXT を送信できます。これは、プロセスの境界を越えても機能します (実際には、プロセスの境界を越えて機能するように設計されています)。

于 2009-07-12T08:25:47.197 に答える