Seite 1 von 1

Maussimulation via SendInput_

Verfasst: 16.09.2021 00:18
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

Re: Maussimulation via SendInput_

Verfasst: 16.09.2021 01:00
von jacdelad
Bei mir ist result=1 und GetLastError_()=0, Windows 7.

Re: Maussimulation via SendInput_

Verfasst: 16.09.2021 13:43
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 .. 

Re: Maussimulation via SendInput_

Verfasst: 16.09.2021 14:05
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 " 

Re: Maussimulation via SendInput_

Verfasst: 16.09.2021 17:28
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?

Re: Maussimulation via SendInput_

Verfasst: 17.09.2021 11:11
von Syr2
Thanks, hat sich geklärt.