Windows Programing for C/C++(Not MFC)

このエントリーをはてなブックマークに追加
316デフォルトの名無しさん
不可視のウィンドウを作って、WM_SETTEXT を無視、WM_GETTEXT で任意の
文字列を返す、という事をやりたいのですが、どうもうまく行きません。

ウィンドウプロシージャでこれらのメッセージを捕まえようとしても、外部プロセス
からの SendMessage() では普通にテキスト設定/取得されてしまいます。
(ウィンドウプロシージャにメッセージが届いていないようです)
一方、プロセス内部からの SendMessage() では、きちんとウィンドウプロシージャ
にメッセージが届き、期待通りの動作をします。

何がいけないのでしょうか。

LRESULT CALLBACK StringGiverWindowProc(HWND hWnd, UINT Message, WPARAM wParam, LPARAM lParam)
{
 static LPCSTR GivingText = NULL;
 switch(Message)
 {
  case WM_CREATE:
   GivingText = (LPCSTR)((CREATESTRUCT *)lParam)->lpCreateParams);
   break;
  case WM_GETTEXT:
    if(lParam && GivingText)
     return (LRESULT)strncpy((LPSTR)lParam, GivingText, (size_t)wParam);
   break;
  case WM_SETTEXT:
   break;
  default:
   return(DefWindowProc(hWnd, Message, wParam, lParam));
 }
 return 0;
}