环境:
Windows 7的
Visual Studio 2010的C++的Win32 API
的Internet Explorer 9
的OpenGL我怎么能SendMessage函数到Internet Explorer 9 WinAPI的
项目目标:
纹理互联网explorer9屏幕实时上一个3d平面(GL_QUADS)。鼠标采摘的3D平面,与相对鼠标位置的点击消息发布真正的Internet Explorer 9
的objectvie是“控制其他程序与3D纹理和鼠标操作上我的应用程序”
代码:
HWND target;
//...
//in winmain
target = ::FindWindow("IEFrame",NULL);
glutMouseFunc(MouseEvent);
//...
//in MouseEvent
void MouseEvent(int iButton, int iState, int x, int y)
{
if(iState == GLUT_DOWN)
{
if(iButton == GLUT_LEFT_BUTTON)
{
POINT p;
p.x = x; p.y = y;
POINT pOut = PickWithPlane(target,p);
//I don't explain this function. cuz it has very long codes and so complicated and don't important.
//it is a simply transform point from my application's Client picking point 'p' to target application(=HWND target)'s relative picking point.
//send a click message to target. but this SendMessage don't work.
SendMessage(target, WM_LBUTTONDOWN, MK_LBUTTON, MAKELPARAM(pOut.x, POut.y);
}
}
}
我用PostMessage的 insted的的的SendMessage,但结果是相同的。
互联网探索不发送任何反应。
我看着使用Microsoft Spy ++消息窗口。
// on real-click IE9's window any point
<10972> 000C0F82 S WM_PARENTNOTIFY fwEvent: WM_LBUTTONDOWN xPos:475 yPos:700
<10973> 000C0F82 R WM_PARENTNOTIFY
<10974> 000C0F82 S WM_MOUSEACTIVATE hwndTopLevel:000C0F82 nHittest:HTCLIENT uMsg:WM_LBUTTONDOWN
<10975> 000C0F82 R WM_MOUSEACTIVATE fuActivate:MA_ACTIVATE
<10976> 000C0F82 S WM_SETCURSOR hwnd:00231438 nHittest:HTCLIENT wMouseMsg:WM_LBUTTONDOWN
<10977> 000C0F82 R WM_SETCURSOR fHaltProcessing:False
//mouseup
<10978> 000C0F82 S WM_SETCURSOR hwnd:00231438 nHittest:HTCLIENT wMouseMsg:WM_MOUSEMOVE
<10979> 000C0F82 R WM_SETCURSOR fhaltProcessing:False
,并使用我的应用程序代码发送的消息是下一个:
// on my application's messge
<13106> 000C0F82 S WM_LBUTTONDOWN fwKeys:MK_LBUTTON xPos:1231 yPos:289
<13107> 000C0F82 R WM_LUBTTONDOWN
我猜一些消息发送。但我不知道什么信息可以做到这一点。
谁知道它的解决方案?
谁知道使用这种方式控制一般应用?
帮帮我!