Windows Vista Mausposition

06/12/2007 - 09:46 von Alexander Rüther | Report spam
Hallo NG

Ich hoffe Ihr könnt mir helfen.

Ich schreibe einen Dienst, der mitstoppen soll wie lange ein User vor dem
Rechner sitzt.
Dafür Teste ich, ob sich die Maus verschiebt.

Folgendes Problem:
Der Dienst funktioniert wunderbar unter Windows XP.
Leider funktioniert er nicht unter Vista.

Ein Testprogramm das einfach die Mauspos ausgibt funktioniert unter Vista.
Der Dienst gibt als Mausposition immer die selben Koordinaten zurück:
512,384.
Egal was passiert.

Damit der Dienst unter XP funktioniert mußte ich ihm erlauben mit dem
Desktop zu kommunizieren, das selbe habe ich natürlich auch unter Vista
gemacht.

Hier der benutze Code:

[System.Runtime.InteropServices.DllImport("user32.dll", EntryPoint =
"GetCursorPos")]
internal extern static bool GetCursorPos(out System.Drawing.Point lpPoint);

public Point getMousePoint()
{
Point MousePoint = new Point(-1,-1);
try
{
GetCursorPos(out MousePoint);
} catch(Exception ex )
{
Debuger.Error(ex,"Mausposition kann nicht abgefragt werden.");
}
return MousePoint;
}

A.Rüther
 

Lesen sie die antworten

#1 Andre Stille
06/12/2007 - 11:19 | Warnen spam
Hallo,

"Alexander Rüther" schrieb im Newsbeitrag
news:
Ein Testprogramm das einfach die Mauspos ausgibt funktioniert unter Vista.
Der Dienst gibt als Mausposition immer die selben Koordinaten zurück:
512,384.
Egal was passiert.

Damit der Dienst unter XP funktioniert mußte ich ihm erlauben mit dem
Desktop zu kommunizieren, das selbe habe ich natürlich auch unter Vista
gemacht.




Das kann unter Vista nicht funktionieren (Stichwort: Session 0 Isolation).
In der Session 0 laufen nur die Services und Systemprozesse, alles andere
làuft in anderen Sessions. Somit sieht der Service die Maus immer an
derselben Position, weil diese ja pro Session an einer anderen Position
stehen kann.

MfG
Andre Stille

Ähnliche fragen