2010-01-29 6 views
0

WH_CALLWNDPROC를 사용하여 WM_SETTEXT 메시지에 후크를 설정했습니다. 후크 프로 시저후킹 문자열 변경 WM_SETTEXT

CWPSTRUCT* info = (CWPSTRUCT*) lParam; 
wchar_t *wsz = NULL; 
switch(info->message) 
{ 
case WM_SETTEXT: 
wsz = (wchar_t *) info->lParam; 
//info->lParam = (LPARAM) L"Hello"; 
//SendMessage(info->hWnd,WM_SETTEXT,0,(LPARAM)L"HEllo"); 
//SetWindowText(info->hWnd,L"Hello"); 


break; 
} 

에서

은 가능한 코드에서 위의 수행으로 문자열을 변경하는 것입니다. 나는

SendMessage(info->hWnd,WM_SETTEXT,0,(LPARAM)L"HEllo"); 
SetWindowText(info->hWnd,L"Hello"); 

처럼 사용하는 API에 의해 시도하지만 그들 중 누구도 working.Idea 여기 WM_SETTEXT 메시지 후크하고 대상 창에 도달하기 전에 문자열을 변경하지 않습니다.

+2

후크는 관찰을위한 것이지 수정을위한 것이 아닙니다 ... 당신이하려고하는 것이 확실하지 않지만 후크가 답이라고 생각하지 않습니다. – Shog9

답변

1

아니요, WH_CALLWNDPROC은 메시지를 수정할 수 없으며 CallWndProc에 대한 설명서에는이 내용이 직접 나와 있습니다.

WH_GETMESSAGE을 사용하면 메시지를 수정할 수 있습니다. GetMsgProc에 대한 설명서를 참조하십시오. 그러나 이것은 아마도 GetMessage() 또는 PeekMessage()로 검색된 메시지와 메시지 대기열을 사용하는 대신 WndProc을 직접 호출하는 메시지가 있기 때문에 원하는대로 작동하지 않습니다.

원하는 작업을 수행하는 방법은 HCBT_CREATEWND 이벤트에 대해 WH_CBT 후크를 사용하는 것입니다. 그런 다음 창을 서브 클래 싱하여 WM_SETTEXT 메시지를 처리하십시오.