Kann ich den Mauszeiger durch ein Skript bewegen?

Powershell 60%
andere, und zwar: 40%
cmd 0%
Javascript 0%

5 Stimmen

2 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet
Powershell

Mausanimation hatte ich doch schon mal: https://www.gutefrage.net/frage/kann-ich-mit-einer-batch-datei-meine-maus-bewegen#answer-343025709

...und natürlich mache ich das (wie immer bei mir) nur mit systemeigenen Resourcen.

Da der Aufruf von Powershellscripten sich gewöhnlich per Rechtsklick recht Sperrig gestaltet verwende ich HybridBatch. Dies bedeutet die trickreiche Verwendung von Batch und Powershell in einer Batchdatei.

hier nochmal das Grundscript:

MouseMove1.cmd

<# : batch portion   Diese Zeile nicht entfernen,maskiert die Batch
@echo off 


  rem ab hier darfst Du die Batch verändern
  rem Maus bewegen
call :MoveMouse 0 0 1000
call :MoveMouse 1024 768 7000
call :MoveMouse 200 26 1000
pause
  rem bis hier darfst Du die Batch verändern
exit /b
::::::::::::::::: Subroutines :::::::::::::::::::::::::


:MoveMouse %1=ZielX %2=ZielY %3=Zeit in Millisekunden 
echo Gehe zu Punkt: %~1 , %~2 in %~3 Millisekunden
powershell -noprofile "$DestPosX=%~1;$DestPosY=%~2;$MoveTime=%~3; iex (${%~f0} | out-string)"
exit /b


: end batch / begin powershell  Diese Zeile nicht entfernen,maskiert die Batch #>


Add-Type -AssemblyName System.Windows.Forms
  # aktuelle Mauspoition
$x = [double]([System.Windows.Forms.Cursor]::Position).x
$y = [double]([System.Windows.Forms.Cursor]::Position).y
$FPS=60
  #Anzahl der Schritte um de Bewegungszeit zum Ziel zu kommen
$Steps=([math]::Round($MoveTime /1000 * $FPS))
  #Schrittweite pro Frame
$StepWidthX=($DestPosX - $X) /$Steps
$StepWidthY=($DestPosY - $Y) /$Steps
  #um am Ende Rundungsfehler bei der Addition abzufangen einen Schritt weniger 
for ($i=1;$i -lt $Steps ;$i++) {
    $x += $StepWidthX
    $y += $StepWidthY
    [System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point(([math]::Round($x)), ([math]::Round($y)))
      #Schritte anzeigen ,zum abschalten # vor  die nächste Zeile setzen
    'Step Nr: {0,4} ; x = {1,4} ; y = {2,4}' -f $i,$([math]::Round($x)),$([math]::Round($y)) 
    Start-Sleep -Milliseconds ($MoveTime/$steps)
}
  #letzter gezielter Schritt zur Endposition
[System.Windows.Forms.Cursor]::Position = New-Object System.Drawing.Point($DestPosX, $DestPosY)

die erweiterte Version poste ich an dieser Stelle nicht nochmals.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
andere, und zwar:

Mit nem Powershell Script geht das zwar, ich würde einfach Autohotkey nehmen. Das muss man im Zweifel auch nicht installieren.


Jokras  12.02.2021, 12:51

Ich benutze auch Autohotkey und finde das lohnt sich auch herunterzuladen, obwohl du das ja nicht willst. Ich finde es sehr nützlich!

AutoHotkey

Erzesel  22.02.2021, 16:06
@Jokras

Autohotkey nutz herzlich wenig, wenn man das Script auch auf einem anderen Rechner als dem eigenen ausführen möchte.

In dieser Hinsicht, wäre es eine Zumutung von einen Nutzer die Installation einer entsprechenden Software zu erwarten.

Dies trifft im Übrigen auch auf Python und andere Runtimeumgebungen zu. (Mit Vorbehalt sogar auf Java. Wobei diese inzwischen schon als Quasistandard gilt. )

Jokras  23.02.2021, 17:26
@Erzesel

Bei AutoHotkey kommt ein .ahk zu .exe konverter mit.

Also ist das kein problem

norgur  23.02.2021, 18:27
@Erzesel

Ein Doppelklick auf ein Setup ist eine Zumutung? Huiuiui, ihr habt aber hohe Standards :P

Aber keine Angst, du musst niemandem was zumuten. Autohotkey kompiliert auf Wunsch eine .exe, die ohne Installation ausgeführt werden kann.

norgur  23.02.2021, 18:32
@norgur

Besides: Powershell-Scripts sind unter Umständen noch weniger portabel, weil das Userprofil auf dem sie ausgeführt werden, nicht unbedingt alle Rechte hat, die man braucht. Das ist umständlicher als ein Installer.

Erzesel  23.02.2021, 18:52
@norgur
Ein Doppelklick auf ein Setup ist eine Zumutung? Huiuiui, 

Hier geht es nicht um die Fähigkeit etwas zu installieren oder einem System zuzuführen, sondern die Berechtigung/ den Willen dies zu tun.

Ich warte turnusmäßig den Prozesssteuerungsrechner einer Industrieanlage. An das Ding kommt kein Normalsterblicher ran und die welche rankommen , durfen keine Datenträger anschließen... alles wird live eingegeben...

Oma Meier ist auch klug, die installiert nichts, was sie nicht kennt oder der Computerfritze in der Nachbarschaft (ich) sagt ihr, das die Sache in Ordnung ist. Die Frau ist klüger als alle Noobs zusammen hier im Forum. (Die hatte noch nie Viren oder Bluescreens und andere seltsame Sachen)

...und natürlich sollte man sich 10 mal überlegen ob man eine EXE-Datei unbekannter Herkunft ausführt.

Da lobe ich mir doch ein gesundes Script (auf Systemresourcen basiert) . Selbst ein Laie kann den Code einsehen und wenn er nichts davon versteht , jemanden Fragen was der Code tut.

Würdest Du eine EXE-Datei welche ich Dir zukommen lasse, einfach so auf Deinem Rechner ausführen? Mut oder Leichtsinn? Würdest Du mir wirklich über den Weg trauen... keine Sorge der Virenscanner wird keinen Verdacht schöpfen... den kannst du anlassen...🤣🤡😱

Erzesel  23.02.2021, 19:04
@norgur
Powershell-Scripts sind

Man kann vieles umschiffen .

Siehe mein obiges Script ist resistent gegen ziemlich alle Restriktionen.

Einfach eine Batch welche sich selbst in einem Scriptblock lädt und magisch zum Powershellcode mutet... "eval" ausgeführt... als würde der Code live in die Powershellconsole eingegeben....

Keinerlei Gegenwehr. .