Mouseanwendung auserhalb der anwenung



  • Louky schrieb:

    [...] swoedfish [...]

    kann mich mal einer richtig schreiben??

    Ein paar stichworte zu deinem Problem:

    typedef struct tagPOINT { 
      LONG x; 
      LONG y; 
    } POINT, *PPOINT; 
    
    HWND WindowFromPoint(
      POINT Point  // point
    );
    
    LRESULT SendMessage(
      HWND hWnd,      // handle to destination window
      UINT Msg,       // message
      WPARAM wParam,  // first message parameter
      LPARAM lParam   // second message parameter
    );
    

    letzteres zum Beispiel in Verbindung mit WM_MBUTTONDBLCLK, WM_MBUTTONDOWN usw.

    Greetz, Swordfish



  • sorry SWORDFISH 😃 ,

    ja, cool schönen dank. Aber ein Problem hab ich noch. ich kann mich erinnern, das "SendMessage(WM_LBUTTONDOWN);" leider so nicht läuft, aufgrund nicht ausreichender Parameter.
    Also dachte ich mir, die Folgenden Parameter seien Koordinaten
    Beispiel : "SendMessage(WM_LBUTTONDOWN, pos_X, pos_Y);"
    Jedoch werden drei Parameter auch nicht akzeptiert. Hast du noch schnell ne Lösung wie ich die Parameterlücke fülle?
    Beispiel : "SendMessage(WM_LBUTTONDOWN,0);" geht auch nícht.
    Leider Habe ich mir die Hilfe nicht mit Installiert, sonst würd' ich mir eben mal ein Beispiel anschauen.



  • dann schau in die msdn von ms.



  • OMG...: http://msdn.microsoft.com/visualc/

    bzw so:

    SendMessage(hWnd/*Fenster*/, WM_LBUTTONDOWN/*Nachricht*/, fwKeys/*noch weitere MTasten gedrückt?*/, MAKELPARAM(X,Y)/*Koordinaten*/);
    


  • Mhh.... was hab ich den hierbei genau falsch gemacht. Mein Crashkurs in c++ hat noch viele Lücken, seh ich gerade... 🙂

    Ich brauch nur einen Funktionalen KLick, sobald ihn den habe, werd ich's schon raffen, und auf die Parameter eingehen. :p

    "Also dachte ich mir, die Folgenden Parameter seien Koordinaten
    Beispiel : "SendMessage(WM_LBUTTONDOWN, pos_X, pos_Y);"
    Jedoch werden drei Parameter auch nicht akzeptiert.
    wie ich die Parameterlücke fülle?
    Beispiel : "SendMessage(WM_LBUTTONDOWN,0);" geht auch nícht."



  • Louky schrieb:

    Ich brauch nur einen Funktionalen KLick, sobald ihn den habe, werd ich's schon raffen, und auf die Parameter eingehen. :p

    "Also dachte ich mir, die Folgenden Parameter seien Koordinaten
    Beispiel : "SendMessage(WM_LBUTTONDOWN, pos_X, pos_Y);"
    Jedoch werden drei Parameter auch nicht akzeptiert.
    wie ich die Parameterlücke fülle?
    Beispiel : "SendMessage(WM_LBUTTONDOWN,0);" geht auch nícht."

    Also das ist der Prototyp der Funktion:

    LONG SendMessage(HWND, UINT, WPARAM, LPARAM);
    

    Daher sollte doch klar sein warum das nicht funzt...du hast 3 Argumente angegeben. :p

    PS: MAKELPARAM ist ein Makro, welches den LowWord bzw. HighWord des LPARAMs (long) beschreibt...siehe C++, Bitmanipulation kanmnst dir ja mal die Def. angucken



  • Louky schrieb:

    Mhh.... was hab ich den hierbei genau falsch gemacht. Mein Crashkurs in c++ hat noch viele Lücken, seh ich gerade... 🙂

    Das glaub ich aber auch 🤡



  • Ha Ha... nein haste aber schon recht mit 😃

    wie sieht den ein ganz normales Beispiel für einen einzigen Mouseklick aus?
    egal welche position, hauptsache es wird mal geklickt? (Ps also wirklich für einen kompletten Dummy) ich glaube über längere Zeit, sollt ich doch mal tiefer in die Materie einsteigen, anstatt immer nur so oberflächlich zu proggn. 🙄



  • Die Mous kann man sinnvoll nur mit

    SendInput
    

    simulieren.



  • Wenn's dich glücklich macht:

    #include <iostream>
    #include <string>
    #include <sstream>
    
    #include <windows.h>
    
    using namespace std;
    
    int main( )
    {
    	POINT pt;
    	pt.x = 100;
    	pt.y = 100;
    
    	HWND window = WindowFromPoint( pt );
    
    	if( !window ) {
    		stringstream ss;
    		ss << "There is no window at ( " << pt.x << " / " << pt.y << " )!";
    		MessageBox( 0, ss.str( ).c_str( ), "Error:", MB_OK );
    		return 0;
    	}
    
    	SendMessage( window, WM_LBUTTONDOWN, MK_LBUTTON, ( ( (unsigned short) pt.y ) << 16 ) + ( (unsigned short ) pt.x ) );
    	SendMessage( window, WM_LBUTTONDOWN, 0, ( ( (unsigned short) pt.y ) << 16 ) + ( (unsigned short ) pt.x ) );
    }
    

    Zum testen am besten Paint maximiert öffnen, einen dicken Pinsel wählen, das compilierte programm unter Start->Ausführen aufrufen und zusehen.

    Greetz, Swordfish



  • Jochen hat (wie immer recht) SendInput( ) kann der User nicht durch "ungewünschte" Aktionen stören.

    Greetz, Swordfish



  • Löly, ....
    Also das:

    ( ( (unsigned short) pt.y ) << 16 ) + ( (unsigned short ) pt.x )
    

    entspricht dem:

    MAKELPARAM(pt.y,pt.x);
    

    Hmm oder sollte es zum mindestens...Swordfish ...hast du den Code getestet...läuft er ?

    Nicht das ich was gg. deine Schreibweise hab...ganz im Ggtl. ...ich wollte nur den Bezug dazu:

    CodeFinder schrieb:

    PS: MAKELPARAM ist ein Makro, welches den LowWord bzw. HighWord des LPARAMs (long) beschreibt...siehe C++, Bitmanipulation kanmnst dir ja mal die Def. angucken

    herstellen. 😉



  • Sicher läuft mein Code! 😃
    Ich hab' nur eine natürliche Abneigung gegen Makros (besonders gegen die der WinAPI).

    Greetz, Swordfish



  • Ob Makro hin oder her. Endlich... es läuft, muss mein Programm nur noch gescheit justieren, wegen den Koordinaten.

    Aber trotzem Danke für die Mühe, ich denk' 'en Lob hört man immer gern. 🙂



  • Schau dir trotzdem

    UINT SendInput(
      UINT nInputs,     // count of input events
      LPINPUT pInputs,  // array of input events
      int cbSize        // size of structure
    );
    

    (Jochen's Vorschlag) an!

    Greetz, Swordfish


Anmelden zum Antworten