我做一个全局钩子(dll),在全局钩子中截到我想要的消息后,发送给安装全局钩子的那个窗体.我的问题是:窗体中能接收到消息,但是是乱码?
给我个解决方法char buf[256];
GetClassName(hwnd,buf,255);
if(strcmp(buf,"msctls_statusbar32")==0)
{
GetWindowText(hwnd,buf,255);
//pMain是全局变量,在安装钩子的时候,赋的值
if(pMain!=NULL)
{
PostMessage(pMain,WU_GETURL,(WPARAM)buf,(LPARAM)buf);
} DeleteObject(buf);
return false;
}
DeleteObject(buf);
return true;
给我个解决方法char buf[256];
GetClassName(hwnd,buf,255);
if(strcmp(buf,"msctls_statusbar32")==0)
{
GetWindowText(hwnd,buf,255);
//pMain是全局变量,在安装钩子的时候,赋的值
if(pMain!=NULL)
{
PostMessage(pMain,WU_GETURL,(WPARAM)buf,(LPARAM)buf);
} DeleteObject(buf);
return false;
}
DeleteObject(buf);
return true;
你最好用COPYDATA消息来做,在VCKBASE上有例子,可以找找,你现在的做法,还需要做很多事情,你要让你Hook DLL访问你的进程,V~Alloc一个内存,
WriteProcMemory你的buf,才行的。
或者在sendmessage的生命周期内声明变量 char buf[256]