我做一个全局钩子(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;

解决方案 »

  1.   

    不是SendMessage或Post的事情。
    你最好用COPYDATA消息来做,在VCKBASE上有例子,可以找找,你现在的做法,还需要做很多事情,你要让你Hook DLL访问你的进程,V~Alloc一个内存,
    WriteProcMemory你的buf,才行的。
      

  2.   

    char buf[256];这个字数组是你用来发送消息的吗?应该将它设成共享
      

  3.   

    char buf[256];应该是一块new出来的内存,因为你退出这个函数,这个变量的作用域就结束了,接受方收到的数据就不对了。
      

  4.   

    设为全局??
    或者在sendmessage的生命周期内声明变量 char buf[256]