2012-03-22 1 views
0

環境での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 

私はいくつかのより多くのメッセージ送信を推測します。しかし、私はどのメッセージがこれを行うことができるのか分かりません。
解決方法を知っている人はいますか?
このように一般的なアプリケーションを制御することを知っているのは誰ですか?

助けてください!

答えて

2

一部のプログラムはPostMessageSendMessageで偽造の入力に提出していません。代わりにSendInputで入力を偽造する必要があります。 UIオートメーションを使用したより高いレベルのアプローチは、誤った入力より簡単です。