環境でのInternet Explorer 9にすることができます:
窓7
のVisual Studio 2010のC++のWin32 API
のInternet Explorer 9
のOpenGLどのように私のSendMessage WinAPIの
プロジェクトの目的:
テクスチャインターネットexplorer9の画面をリアルタイムに3d-Plane(GL_QUADS)。
9. 3D面、相対マウス位置でクリックメッセージが掲載され、実際のインターネットエクスプローラ上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);
}
}
}
iは、のSendMessageのinstedのPostMessageを使用するが、結果は同じです。
インターネットエクスプローラは反応を送信しません。
私はマイクロソフトのスパイを使用して見++メッセージウィンドウ。
// 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
私はいくつかのより多くのメッセージ送信を推測します。しかし、私はどのメッセージがこれを行うことができるのか分かりません。
解決方法を知っている人はいますか?
このように一般的なアプリケーションを制御することを知っているのは誰ですか?
助けてください!