3

C++を使用して、スパイ++の「メッセージ」ウィンドウからテキストを取得しようとしています。

WM_GETTEXTLB_GETMESSAGEメッセージをウィンドウとその子に送信しようとしましたが、機能しません。

コードはメモ帳でテストされ、正常に動作しましたが、これを行う方法は?

この関数を EnumChildWindows(spyHwnd,EnumChildProc,1); と呼びます。//spyHwnd は「メッセージ」ウィンドウのハンドルです

BOOL CALLBACK EnumChildProc(HWND hwnd, LPARAM lParam)
{
  TCHAR text[40];
  int length = 0;
  int index = 5;
  length = SendMessage(hwnd,LB_GETTEXT,index,(LPARAM)text);//or WM_GETTEXT & maxLength=40

  return true;
}
4

1 に答える 1

0

お探しのウィンドウには「AfxWnd80u」クラスがあります。オーナーが描いたもので間違いないです。ペイントとマウス関連以外のメッセージを受信して​​いないようです。所有者の描画は、Spy++ がテキストを内部のどこかに保存し、手動でウィンドウ キャンバスをペイントすることを意味します。

この同じリストで [メッセージ プロパティ] ウィンドウを開くと、標準のリストボックス コントロールが使用されていることがわかります。明らかに動作が異なります - 選択が異なって見え、スクロールがよりスムーズです (これらのことはカスタマイズできるため、証拠としては不十分ですが、それでもある程度はわかります - 1 つのアプリで異なることを行うのはなぜでしょうか?)

Web で「get text AfxWnd」を検索すると、答えのない多くの質問が表示されます。Ctrl+C をシミュレートしてクリップボードの内容を取得する方法もありますが、Spy++ メッセージ ウィンドウは Ctrl+C をサポートしていないようです。

したがって、ここでは簡単な WinAPI の方法はありません。

于 2012-09-13T11:39:15.277 に答える