2010-12-23 10 views
1

Ich habe ein Szenario, ich muss Klickereignisse an eine unabhängige Anwendung senden. Ich habe diese Anwendung mit dem folgenden Code gestartet.Senden Klicken Sie auf Nachricht zu einem anderen Anwendungsprozess

Jetzt möchte ich Mausklick-Nachricht an diese Anwendung senden, habe ich bestimmte Koordinaten in Bezug auf Anwendungsfenster. Wie kann ich es mit Windows Messaging oder einer anderen Technik machen?

I verwendet

[DllImport("user32.dll")] 
private static extern void mouse_event(UInt32 dwFlags, UInt32 dx, UInt32 dy, UInt32 dwData, IntPtr dwExtraInfo); 

Es funktioniert gut, aber bewirken, dass der Zeiger auch bewegen. Also nicht für meine Bedürfnisse geeignet.

Dann benutze ich.

Es funktioniert gut für minimieren maximieren, aber nicht für Mausereignisse.

Die Codes für mousevents i bin mit,

WM_LBUTTONDOWN = 0x201, //Left mousebutton down 
WM_LBUTTONUP = 0x202, //Left mousebutton up 
WM_LBUTTONDBLCLK = 0x203, //Left mousebutton doubleclick 
WM_RBUTTONDOWN = 0x204, //Right mousebutton down 
WM_RBUTTONUP = 0x205, //Right mousebutton up 
WM_RBUTTONDBLCLK = 0x206, //Right mousebutton do 

Vielen Dank für die Hilfe im Voraus, und um Feedback zu warten.

+2

Beenden Sie das Senden von Eingangsnachrichten, sie sollten gebucht werden. Sie könnten besser 'SendInput()' sowieso verwenden, das ist der richtige Weg, um Eingaben zu fälschen. –

Antwort

0

Speichern Sie die Cursorposition, verwenden Sie mouse_event und bewegen Sie den Cursor zurück. mouse_event ist wirklich der beste Weg, dies zu tun.

+0

Warum funktioniert SendMessage nicht? –

+0

Ein einzelner Klick beinhaltet mehrere Nachrichten, wie Mausbewegung, Taste gedrückt, Taste gedrückt, klicken und möglicherweise andere. Ich sage nicht, dass es unmöglich ist, mit SendMessage zu simulieren, weil es definitiv ist, es ist nur viel schwieriger. Sie sollten eine einfache Formularanwendung erstellen, die alle empfangenen Nachrichten in eine Textdatei ablegt und sieht, was passiert. – fejesjoco

+0

Ich habe gerade diese Bibliothek gefunden http://www.programsheaven.com/download/56171/download.aspx, Es funktioniert sehr gut, aber immer noch nicht für den Klick arbeiten. Habe auch viele andere Dinge ausprobiert, aber Klick funktioniert nicht. Gibt es ein Problem mit Windows7, ich lese einige, wo Windows Vista + OS haben einige Benutzeroberflächenschutz einige wie. Ist es dieses Problem? –

2

Für einen einzigen Klick sollten Sie zwei Mausereignis gleichzeitig für ein genaues Mausklick-Ereignis senden.

SendMessage(nChildHandle, 0x201, 0, 0); //Mouse left down 
SendMessage(nChildHandle, 0x202, 0, 0); //Mouse left up 

Es funktioniert in meinem Projekt.

+1

Das Fenster muss nicht fokussiert sein, um dies zu verwenden, oder? Ist es möglich, dass es minimiert wird und wir Klicks mit diesem bei bestimmten x und y synchronisieren können? – Noitidart

Verwandte Themen