现在有一个透明的窗体,能看到下面的程序(比如说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为要传递消息的程序句柄,为什么上面的程序不行?
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为要传递消息的程序句柄,为什么上面的程序不行?
PostMessage(EXEHandle,WM_LBUTTONUP,0,0);
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));
所以postmessage(^^)自然没用,你应该 findwiondow(nil,‘要发送的窗体名')
然后再发送消息
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意思, :)
反正最后传递的是屏幕坐标,
现在这个功能暂时取消,等待解决...555