[英]Changing string after hooking WM_SETTEXT
我已经使用WH_CALLWNDPROC在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;
}
是否可以像上面的代码中那样更改字符串。 我尝试使用类似的API
SendMessage(info->hWnd,WM_SETTEXT,0,(LPARAM)L"HEllo");
SetWindowText(info->hWnd,L"Hello");
但是它们都不起作用。这里的想法是钩住WM_SETTEXT消息并在字符串到达目标窗口之前对其进行更改。
不, WH_CALLWNDPROC
不允许您修改消息, CallWndProc的文档直接说明了这一点。
WH_GETMESSAGE
确实允许您修改消息。 请参阅GetMsgProc的文档。 但是,这可能无法满足您的需求,因为它仅使用GetMessage()或PeekMessage()检索并发送消息的消息直接调用WndProc,而不是使用消息队列。
执行所需操作的方法是使用WH_CBT
挂钩,并为HCBT_CREATEWND
事件列出该挂钩。 然后在创建窗口时将其子类化,并处理WM_SETTEXT
消息。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.