现在有一个透明的窗体,能看到下面的程序(比如说ie浏览器),请问如何能把在这个透明窗体上的鼠标按键消息传到下面的那个程序中去,就像在直接点击下面的那个程序一样.
  GetCursorPos(XY);
  SetForegroundWindow(EXEHandle);
  SetCapture(EXEHandle);
  SendMessage(EXEHandle,WM_LBUTTONDOWN,MK_LBUTTON,MakeLParam(XY.X, XY.Y));
  SendMessage(EXEHandle,WM_LBUTTONUP,MK_LBUTTON,MakeLParam(XY.X, XY.Y));xy为当前鼠标所在的屏幕坐标,exehandle为要传递消息的程序句柄,为什么上面的程序不行?

解决方案 »

  1.   

    PostMessage(EXEHandle,WM_LBUTTONDOWN,0,0);
     PostMessage(EXEHandle,WM_LBUTTONUP,0,0);
      

  2.   

    SDK说明
    WM_LBUTTONDOWN  WM_LBUTTONUP 
    fwKeys = wParam;        // key flags 
    xPos = LOWORD(lParam);  // horizontal position of cursor 
    yPos = HIWORD(lParam);  // vertical position of cursor PostMessage(EXEHandle,WM_LBUTTONDOWN,0,MAKELPARAM(LOWORD(point.x), LOWORD(point.y));
      

  3.   

    窗体虽然透明,但是 GetCursorPos(XY)这样获得的句柄依旧当前透明窗体的啊
    所以postmessage(^^)自然没用,你应该 findwiondow(nil,‘要发送的窗体名')
    然后再发送消息
      

  4.   

    EXEHandle这个句柄怎么得到的Spy++吗?
      

  5.   

    同意hanyel,
    GetCursorPos(XY);没什么用啊
      

  6.   

    GetCursorPos(XY);
    //
      EXEHandle := Findwiondow(nil,‘要发送的窗体名')
    //
      SetForegroundWindow(EXEHandle);
      SetCapture(EXEHandle);
      SendMessage(EXEHandle,WM_LBUTTONDOWN,MK_LBUTTON,MakeLParam(XY.X, XY.Y));
      SendMessage(EXEHandle,WM_LBUTTONUP,MK_LBUTTON,MakeLParam(XY.X, XY.Y));表达一下hanyel意思, :)
      

  7.   

    用getcursorpos是为了得到鼠标当前的坐标,可能还需要加clienttoscreen
    反正最后传递的是屏幕坐标,
    现在这个功能暂时取消,等待解决...555