Laden...

maus, cursor bewegen

Erstellt von janismac vor 16 Jahren Letzter Beitrag vor 16 Jahren 5.472 Views
j
janismac Themenstarter:in
183 Beiträge seit 2007
vor 16 Jahren
maus, cursor bewegen

hallo

kann mir jemand sagen wie man den cursor bewegen und klicks simulieren kann
also nicht im formular sondern auf system ebene
mit welchen dll's geht das???
kann ich auch die tastatur auf system-ebene abfragen und tasten-drücke simulieren

danke

PS: ich brauch das für n prog mit dem man mir dem joystick die maus ähh quatsch den cursor steuern kann und ich wollte dasnn auf die cursortasten irgendwelche maus-tasten und/oder tasten-kombinationen (z.B. Strg+Alt+Entf) legen.

f
722 Beiträge seit 2005
vor 16 Jahren

zum abfangen musst du einen systemweiten hook setzen. siehe codeproject.com für entsprechende beispiele

j
janismac Themenstarter:in
183 Beiträge seit 2007
vor 16 Jahren

ähhhhhh
das hilft mir so gerade garnicht weiter X( X( 8o
ich hab mal bei codeproject.com nach hook gesuch konnte damit aber eigentlich nichts anfangen ⚠
gibt es nicht irgend eine funktion in irgendner win dll (rundll32, user32 usw..) :rtfm:

danke für antworten 👍 👍

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo janismac,

Stichwort ist und bleibt gloabal hook. Wenn nicht bei codeprojectt, dann bei google oder bei weiteren Suchmöglichkeiten.

herbivore

830 Beiträge seit 2005
vor 16 Jahren

Hallo janismac,

ein besseres Beispiel wirst du kaum finden 🙂

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

242 Beiträge seit 2006
vor 16 Jahren

Original von Friedel
Hallo janismac,

ein besseres
>
wirst du kaum finden 🙂

Gruss
Friedel

das Beispiel ist nicht schlecht, jedoch würde ich meinen es bewirkt genau das gegenteil von dem gewünschten effekt. es speichert ja ab was man getppt hat, also sit es eigentlich ein keylogger.

hast du nicht vielleicht noch nen code um z.b. die mausposition auf 10;50 zu stellen?

mfG b3nJ

738 Beiträge seit 2007
vor 16 Jahren

zum setzen des cursors reicht:


Cursor.Position = new Point(10, 50);

242 Beiträge seit 2006
vor 16 Jahren

hm, ich habs immer mit mouseposition versucht...

wofür gibts eigentlich cursor.position und mouseposition, mouseposition ist da ja irgendweie überflüssig oder irre ich mich?!?

mfg b3nJ

j
janismac Themenstarter:in
183 Beiträge seit 2007
vor 16 Jahren

danke Friedel das ist schon mal ein teil davon

wegen mouse- bzw. cursor.pos setzten
das funktioniert doch nur so lange das formular aktiviert ist

ich hab mal nach "global hook" gegooglet aber immer noch nichts (mir) hilfreiches
gefunden....

wenn da jmd. n gutes (möglichst deutsches) turtorial kennt, bitte posten!!! 👍

2.921 Beiträge seit 2005
vor 16 Jahren

kann mir jemand sagen wie man den cursor bewegen und klicks simulieren kann
also nicht im formular sondern auf system ebene

@Janismac: Das kommt darauf an, was du machen willst...
Wenn Du einfach nur ein bestimmtes Control klicken lassen willst, von dem du schon das Fensterhandle ermittelt hast (normalerweise vom Typ IntPtr) dann reicht eine SendMessage mit WM_CLICK.

Wenn Du aber den Mauszeiger automatisch positionieren lassen willst,
würde ich solche Funktionen wie ClientToScreen, SetCursorPos und
und z.B. MouseEvent benutzen, alle Deklarationen sind auf www.pinvoke.net nachschlagbar.

mit welchen dll's geht das???

Normalerweise benutzt man da meist apis aus user32.dll.

kann ich auch die tastatur auf system-ebene abfragen und tasten-drücke simulieren

Ja, auch das geht.

Stichwort: GetAsyncKeystate

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

j
janismac Themenstarter:in
183 Beiträge seit 2007
vor 16 Jahren

hallo

@dr4g0n76

pinvoke.net is ja ne super seite !!!
danke

mit folgendem (simplen) code kann man den cursor jetzt bewegen



    public partial class Form1 : Form
    {
        [DllImport("user32.dll")]
        static extern bool SetCursorPos(int X, int Y);

        [DllImport("user32.dll")]
        static extern bool GetCursorPos(out Point lpPoint);

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            bool x;
            Point p = new Point();
            x = GetCursorPos(out p);
            if (e.KeyValue == 37)
                x = SetCursorPos(p.X - 10, p.Y);
            else if (e.KeyValue == 38)
                x = SetCursorPos(p.X, p.Y - 10);
            else if (e.KeyValue == 39)
                x = SetCursorPos(p.X + 10, p.Y);
            else if (e.KeyValue == 40)
                x = SetCursorPos(p.X, p.Y + 10);
        }
    }

aber eine funktion zum emulieren eines klicks hab ich noch nicht gefunden X(

wenn ihr eine kennt sagt es mir

MfG janismac

EDIT:

habs jez doch gefunden "mouse_event" und "keybd_event"

noch eine letzte sache dann ist das programm fertig
weiß jmd wie man mit directinput auf den joystick zugreifen kann???
dazu gibt es ein beispiel in VB
das verstehe ich aber so gut wie chinesisch

danke für antworten