アプリ版:「スタンプのみでお礼する」機能のリリースについて

はじめまして。
トップレベルウインドウ000E046Eの子孫ウィンドウのキャプションを取得しようとしていますが一部の子孫ウィンドウで思い通りの結果を得られません。画像はSpy++で取得したものです。
■得た結果
①ウィンドウ000F04E6は思い通りの文字列"FolderVilew"を得られる。
②ウィンドウ00080500とウィンドウ000D0404は文字列"C:\"ではなくNULL文字が得られる。
③ウィンドウ00040442は文字列"7 個のオブジェクト"ではなくNULL文字が得られる。
④その他のウィンドウは思い通りのNULL文字を得られる。
②と③の動作がSpy++の結果と異なります。

■実際に行っている操作
①CWnd::FronHandle(各子孫ウィンドウのHWND)で、CWnd*へのポインタpWndを得る。
②pWnd->GetWindowText()でウインンドウキャプションを得る。

■確認した事
・ウインドウ000E046Eの子孫ウィンドウの全てが同プロセス・同スレッドにある。
・C:\以外のフォルダで試してもSpy++と結果が異なる。

どの様にすればSpy++と同じ結果が得られるかご助言いただきたいです。

「子孫ウィンドウのキャプション取得について」の質問画像

質問者からの補足コメント

  • 環境は下記です。
    Windows XP SP3
    Visual Studio 2003 MFCアプリケーション

      補足日時:2015/04/18 06:35

A 回答 (1件)

pWnd->GetWindowText() って GetWindowText API のラッパーだと思うのですが、


プロセス間のやりとりは無理でしょう。

SDKベースで書くなら次のようにすれば取れるはず。

HWND hWnd = ....
TCHAR tmp[128];
::SendMessage(hWnd, WM_GETTEXT, (WPARAM)sizeof tmp, (LPARAM)tmp);
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!