Powershell: MouseMove czyli ruszanie myszką

3-gru-2015

Wyobraź sobie, że masz w nocy do wykonania długotrwałe zadanie. Jeśli na komputerze nic się dzieje mogą się zdarzyć różne niespodziewane rzeczy: komputer przejdzie w stan czuwania, rozłączy się sesja zostaniesz wylogowany itp. No a oczywiście nie chce ci się siedzieć całą noc, żeby tylko ruszać myszką…

No więc napiszmy program ruszający myszką. Co będzie potrzebne?

  • klasa [System.Windows.Forms.Cursor], a dokładniej jej właściwość Position, która to opisuje aktualne położenie kursora myszki w punktach
  • klasa System.Drawing.Point, która jak sama nazwa wskazuje pozwala na zapamiętanie współrzędnych punktu

Aby sprawdzić gdzie znajduje się kursor wykonaj polecenie:

[System.Windows.Forms.Cursor]::Position

mouse01

Kurs_powershell_landscape_620

X i Y to właściwości opisujące aktualne położenie kursora. Jeśli chcesz zmienić jego położenie, to zmień wartość X lub Y, np. tak:
[System.Windows.Forms.Cursor]::Position = `

New-Object -TypeName System.Drawing.Point -ArgumentList 100,1000

New-Object tworzy tutaj obiekt typu System.Drawing.Point i wywołuje dla niego dwuargumentowy konstruktor przekazując nowe współrzędne lokalizacji kursora myszki. Tak utworzony obiekt jest następnie przypisywany do właściwości Position, co powoduje zmianę położenia kursora.

Żeby zrealizować założone na początku zadanie, skrypt ruszający myszką mógłby wyglądać o tak:

while ($true)

{

     $point = [System.Windows.Forms.Cursor]::Position
     $point.X+=1
     [System.Windows.Forms.Cursor]::Position = $point
     Start-Sleep -Seconds 60
     $point = [System.Windows.Forms.Cursor]::Position
     $point.x-=1
     [System.Windows.Forms.Cursor]::Position = $point
     Start-Sleep -Seconds 60
}

Pozdrowienia dla Chris’a,  który miał ten dziwny pomysł i zmobilizował mnie do szukania rozwiązania.

Dokumentacja klas, o których tutaj mowa: https://msdn.microsoft.com/pl-pl/library/system.drawing.point(v=vs.110).aspx

 

Autor: Rafał Kraik