![]() |
Mausklick global simulieren
hi, habe noch nicht sehr viele themen darüber gefunden?
wie kann ich einen mausklick simulieren (->global) ? muss ich da ein mousehook inst. oder gibts da noch andre wege? |
Re: Mausklick global simulieren
geht ganz einfach mit
Delphi-Quellcode:
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0); |
Re: Mausklick global simulieren
Das macht aber nur Sinn wenn das Programm nicht selbst im Vordergrund ist, da es sonst den Mausklick selber bekommt.
Entsprechend gibt es noch keybd_event bzw die neuere Funktion SendInput. |
Re: Mausklick global simulieren
Ich habe mal einen C++-Code geschrieben, wo ich SendInput verwende (rauf und runter von linker und rechter maustaste).
Es ist nicht besonders einfach weil man ein kompliziertes Array füllen muss. Hier der original-Code mit globalen Arrays zur Performancesteigerung:
Code:
Getestet mit Visual C++ 6.0 Autorenversion.
#include <windows.h>
#include <winable.h> // bin mir nicht sicher ob man winable wirklich braucht oder ob das für etwas anderes war...ausprobieren... INPUT runter,rauf, rechtsrunter, rechtsrauf; // mit runter und rauf ist die linke maustaste gemeint void ldown(void); // linke maustaste runter void lup(void); // linke maustaste rauf void rdown(void); // rechte maustaste runter void rup(void); // rechte maustaste rauf ... ... ... // Beim Programmstart die Arrays mit Werten füllen: runter.mi.dx=0; runter.mi.dy=0; runter.mi.mouseData=0; runter.mi.dwFlags=MOUSEEVENTF_LEFTDOWN; runter.mi.dwExtraInfo=0; runter.mi.time=0; rauf.mi.dx=0; rauf.mi.dy=0; rauf.mi.mouseData=0; rauf.mi.dwFlags=MOUSEEVENTF_LEFTUP; rauf.mi.dwExtraInfo=0; rauf.mi.time=0; rechtsrunter.mi.dx=0; rechtsrunter.mi.dy=0; rechtsrunter.mi.mouseData=0; rechtsrunter.mi.dwFlags=MOUSEEVENTF_RIGHTDOWN; rechtsrunter.mi.dwExtraInfo=0; rechtsrunter.mi.time=0; rechtsrauf.mi.dx=0; rechtsrauf.mi.dy=0; rechtsrauf.mi.mouseData=0; rechtsrauf.mi.dwFlags=MOUSEEVENTF_RIGHTUP; rechtsrauf.mi.dwExtraInfo=0; rechtsrauf.mi.time=0; ... ... ... // Da die Arrays bereits gefüllt sind, brauchen wir nur noch funktionen die SendInput aufrufen: void ldown(void) // maustaste runter { SendInput(1,&runter,sizeof(runter)); } void lup(void) // maustaste rauf { SendInput(1,&rauf,sizeof(rauf)); } void rdown(void) // rechte maustaste runter { SendInput(1,&rechtsrauf,sizeof(rechtsrauf)); } void rup(void) // rechte maustaste rauf { SendInput(1,&rechtsrunter,sizeof(rechtsrunter)); } Habe leider keine Zeit, den Code in Delphi zu übersetzen. Dürfte nicht besonders schwer sein, vielleicht kann das ja ein anderer machen...oder ich ein wenig später... Wenn du z.B. einen linken Mausklick simulieren willst, musst du nacheinander ldown und lup aufrufen. Tubos |
Re: Mausklick global simulieren
ich will ein programm schreiben dass im hintergrund läuft und in regelmässigne zeitabständen einen mausklick simuliert bei bestimmten koordinaten durchführt fenster nicht bestimmt.
braucge ich dazu nen hook oder ist das ohne möglich... der og. befehl funktioniert nicht bzw nur im eigenen fenster... |
Re: Mausklick global simulieren
du brauchst dazu keinen hook!!!
Delphi-Quellcode:
funktioniert ohne
mouse_event(MOUSEEVENTF_LEFTDOWN, x, y, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, x, y, 0, 0); |
Re: Mausklick global simulieren
Zitat:
nur funktioniert die methode nicht wenn ich zb. nen mausklick simulieren will x=52 y=726 koordinbaten des startbuttons bei ner auflösung von 1024x768 (bei mir) tut sich gar nix... |
Re: Mausklick global simulieren
führst du die Methode in einem OnClick von einem Button aus? Dann gehts nicht weil das mit den KlickMessages des Buttons vermicht wird. In meinem Trojaner den ich mal geschrieben hab funktioniert die Variante wunderbar
|
Re: Mausklick global simulieren
Zitat:
|
Re: Mausklick global simulieren
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz