2

これは一種のGUI自動化アプリケーションであり、別のプロセスのリストビューからデータを読み取りたいと考えています。

リストビュークラスはSysListView32であり、次のスタイルが設定されていますLVS_OWNERDRAWFIXED

通常、次の手順を使用してリストビューからテキストを読み取ることができます

  • 他のプロセスのメモリスペースにメモリを割り当てます
  • そのプロセスで割り当てられたバッファのポインタでテキストを読むためにlistviewにメッセージを送信します
  • バッファを読み取る

リストビューがownerdrawnでない場合は正常に機能しますが、この場合、listviewは所有者によって描画されているように見えます。つまり、listitemにはデータがありません。

私が説明した方法または任意の方法によって、あるいはAPIまたはその他の方法をフックすることによって、そのようなリストビューからテキストを読み取ることは可能ですか?

4

1 に答える 1

3

コントロールは、LVITEMをリストビューに追加する必要があります。しかしもちろん、それらに有用なものを入れる義務はありません。nullのpszTextまたはiImageを指定すると、アプリが独自の描画を行う場合に問題なく機能します。WM_DRAWITEMメッセージハンドラーを実装し、内部データを使用してアイテムをレンダリングします。

そのデータがどこに保存されているかを知る方法はありません。HDCを作成するためにコードを挿入する必要があるため、実行するのは非常に困難ですが、独自のWM_DRAWITEMメッセージを偽造することもできますが、それはバイトではなくピクセルを取得するだけです。OCRの使用は、主要な外れ値ソリューションになります。現実的には、これにタオルを投げる必要があります。

于 2012-11-25T19:12:06.723 に答える