PowerShell Lösung um Mauszeiger nach Energiesparmodus zu "refreshen"

>|Sh4d0w|<

Commander
Registriert
Jan. 2009
Beiträge
2.514
Hallo zusammen,
ich suche nach einer Möglichkeit, mittels Powershell den Mauszeiger zu refreshen. Ich habe ein Script, was immer im Hintergrund läuft und "lauscht", ob eine Bedingung erfüllt ist :)
Der Mauszeiger wäre hilfreich, da z.B. Gopher gestartet wird um so die Maus mittels Controller zu bewegen. Leider sehe ich somit nicht, wohin ich den Mauszeiger steuere.
Das Problem kommt nach einigen "Aufweckungen" aus dem Energiesparmodus und so fehlt dann der Mauszeiger nach autom. Anmeldung.Erst durch eine Mausbewegung wird der Zeiger wieder angezeigt.

1. Feste Positionsangabe geben (funktioniert unzuverlässig mit untersch. Ergebnissen in der ISE, sowie im Scriptaufruf, keine Anzeige des Mauszeigers:
Code:
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class MouseMover {
    [DllImport("user32.dll")]
    public static extern bool SetCursorPos(int x, int y);
}
"@

[MouseMover]::SetCursorPos(1200, 1200)


2. Versuch,. Mauszeiger mittels Icon zu "refreshen", klappt auch nur unzuverlässig:
Code:
Add-Type @"
using System;
using System.Runtime.InteropServices;
public class MouseCursor {
    [DllImport("user32.dll", SetLastError=true)]
    public static extern bool SetSystemCursor(IntPtr hcur, uint id);
    [DllImport("user32.dll")]
    public static extern IntPtr LoadCursorFromFile(string lpFileName);
}
"@

$cursorFile = "C:\Windows\Cursors\arrow.cur"
$cursorHandle = [MouseCursor]::LoadCursorFromFile($cursorFile)


$IDC_ARROW = 32512  # Der Cursor-Typ für den normalen Mauszeiger
[MouseCursor]::SetSystemCursor($cursorHandle, $IDC_ARROW)

3. Versuch, die Mausposition zu ermitteln und die Position um +1 Px in X und Y zu erweitern funktioniert ebenso nicht.

Was schafft hier Abhilfe? Ist zwar nur ein Luxusproblem, aber vllt gibt es ja eine Lösung:)
 
>|Sh4d0w|< schrieb:
3. Versuch, die Mausposition zu ermitteln und die Position um +1 Px in X und Y zu erweitern funktioniert ebenso nicht.
Was funktioniert denn dabei genau nicht? Erhälst Du schon keine Mausposition (einfach zusätzlich in ein Logfile schreiben) oder führt nur das Neusetzen zu keiner Anzeige des Mauszeigers?

Ich vermute das Problem eher bei der Art der Ausführung des Skripts im Allgemeinen. Läuft das überhaupt in der GUI (sollte es bei der ISE), wenn es automatisch gestartet wird.

Falls die Maus vom System außerhalb vom Bildschirm verschoben wurde, dann klappt 3. nur zufällig (nur wenn X und Y nach dem Verschieben im sichtabren Bereich sind).

U.U. klappt auch Skript 1 nicht, weil die Maus (warum auch immer) vom System automatisch auf den "Samsung P2350" verschoben wird und dann 1200/1200 außerhalb vom Monitor liegt.
 
Die Mausposition wird schon gesetzt, jedoch eher auf ~1600x1600, manchmal klappts auf 1200, als wäre irgendeine Skalierung "falsch". Der Mauscursor wird dabei nicht angezeigt, erst wenn ich der Maus einen kleinen Schubser gebe, damit sich die Position ändert.

Der P2350 ist von den Reaktionszeiten schneller als der ASUS. Die Aktion wird gestartet, bevor eine kleine GUI gestartet wird und nachdem der ASUS "da ist". Auch mit Wartezeiten etc. klappt es nicht, um ggf. die Reaktionszeiten und die Registrierung der Auflösung auszuschließen.
Ergänzung ()

Mir scheint das irgendwie generell buggy zu sein, wenn der PC aus dem Energiesparmodus "kommt" und der Cursor bereits vorher nicht angezeigt wird.
 
Zuletzt bearbeitet:
Zurück
Oben