Maussimulation via SendInput_

Für allgemeine Fragen zur Programmierung mit PureBasic.
Syr2
Beiträge: 31
Registriert: 11.03.2020 13:39

Maussimulation via SendInput_

Beitrag von Syr2 »

Ich verusche die Maus x/y-Koordinate zu verändern, leider ohne Erfolg.

Ich weiss, dass dx und dy normalisiert werden müssen, das schient aber nicht das Problem zu sein.
Debug GetLastError_() gibt mit 87 aus -> Also falscher Parameter. Der Falsche Parameter ist scheinbar MOUSEEVENTF_MOVE. :?
Kann mir jemand helfen? Per Rawinput wäre auch okay, aber Setcursorpos_() hilft mir nicht.

Code: Alles auswählen

In.INPUT

  in\type = #INPUT_MOUSE
  In\mi\dx = 5000
  In\mi\dy = 50000
  In\mi\dwFlags = #MOUSEEVENTF_ABSOLUTE | #MOUSEEVENTF_MOVE
  In\mi\mouseData = 0
  In\mi\time = 0
  In\mi\dwExtraInfo = 0

  result = SendInput_(1, @In, SizeOf(input))
Gruß
Syr2
Benutzeravatar
jacdelad
Beiträge: 341
Registriert: 03.02.2021 13:39
Computerausstattung: Ryzen 5800X, 108TB Festplatte, 32GB RAM, Radeon 7770OC
Wohnort: Riesa
Kontaktdaten:

Re: Maussimulation via SendInput_

Beitrag von jacdelad »

Bei mir ist result=1 und GetLastError_()=0, Windows 7.
PureBasic 6.04/XProfan X4a/Embarcadero RAD Studio 11/Perl 5.2/Python 3.10
Windows 11/Ryzen 5800X/32GB RAM/Radeon 7770 OC/3TB SSD/11TB HDD
Synology DS1821+/36GB RAM/130TB
Synology DS920+/20GB RAM/54TB
Synology DS916+ii/8GB RAM/12TB
Axolotl
Beiträge: 146
Registriert: 31.12.2008 16:34

Re: Maussimulation via SendInput_

Beitrag von Axolotl »

ich habe das (immer) mit dieser Funktion gemacht. (MSDN: This function has been superseded. Use SendInput instead. )
SendInput muss ich mir mal angucken.

Code: Alles auswählen

; VOID WINAPI mouse_event(_In_  DWORD dwFlags, _In_  DWORD dx, _In_  DWORD dy, _In_  DWORD dwData, _In_  ULONG_PTR dwExtraInfo); 
Define dx, dy 
; mouse_event_(#MOUSEEVENTF_MOVE, dx, dy, 0, 0) 

;;' call this continously to keep the screen saver away :) 
; mouse_event_(#MOUSEEVENTF_MOVE, 1, 0, 0, 0)  ;' one pixel to the right .. 
; delay(125) 
; mouse_event_(#MOUSEEVENTF_MOVE, -1, 0, 0, 0)  ;' one pixel to the left .. 
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Axolotl
Beiträge: 146
Registriert: 31.12.2008 16:34

Re: Maussimulation via SendInput_

Beitrag von Axolotl »

Dein code funktioniert bei mir (kleine animations-schleifen :) hinzugefügt)

Code: Alles auswählen

In.INPUT
Debug "Start " 
For nX = 1 To 10000 Step 1000 
For nY = 1 To  5000 Step 1000 
  
  in\type = #INPUT_MOUSE
  In\mi\dx = nX ;5000
  In\mi\dy = nY ;50000
; In\mi\dwFlags = #MOUSEEVENTF_MOVE ;; #MOUSEEVENTF_ABSOLUTE | #MOUSEEVENTF_MOVE
  In\mi\dwFlags = #MOUSEEVENTF_ABSOLUTE | #MOUSEEVENTF_MOVE 
  In\mi\mouseData = 0
  In\mi\time = 0
  In\mi\dwExtraInfo = 0

  result = SendInput_(1, @In, SizeOf(input)) 

Debug "  result " + result + "  x,y " + nX + ", " + nY 

  Delay(125) 
Next nY 
Next nX 

Debug "Done " 
Mostly running PureBasic <latest stable version and current alpha/beta> (x64) on Windows 11 Home
Benubi
Beiträge: 186
Registriert: 22.10.2004 17:51
Wohnort: Berlin, Wedding

Re: Maussimulation via SendInput_

Beitrag von Benubi »

Axolotl's code funktioniert, aber die Maus-Koordinaten sind keine Pixel bei mir... die Maus bleibt während des Durchlaufs in der Ecke oben links, und landet auf dem Compiler-Option Icon in der Toolbar. Müsste aber weit außerhalb des Bildschirms liegen?
Syr2
Beiträge: 31
Registriert: 11.03.2020 13:39

Re: Maussimulation via SendInput_

Beitrag von Syr2 »

Thanks, hat sich geklärt.
Antworten