Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mauszeiger im Anmeldebildschirm bewegen (https://www.delphipraxis.net/141799-mauszeiger-im-anmeldebildschirm-bewegen.html)

Bambi 16. Okt 2009 12:28


Mauszeiger im Anmeldebildschirm bewegen
 
Hallo Leute,
ich hab ein echt kniffliges Problem: ich möchte den Mauszeiger programmgesteuert im Anmeldebildschrim bewegen (mein Programm läuft als Service...). Wenn ich angemeldet bin funktioniert das mit mouse_event wunderbar. Sobald ich mich abmelde (oder "Benutzer wechseln") funktioniert das aber nicht mehr. Ich hab auch schon andere Varianten wie mouse.curorpos oder SendInput verwendet, alles ohne Erfolg.

Gibt es irgendeine API-Funktion o.Ä., mit der ich den Mauszeiger auch im Anmeldebildschrim kontrollieren kann (klicken sollte natürlich auch gehen...)?? Oder mit Botschaften?

Oder ist das prinzipiell nicht möglich.
Die Befehle kommen übrigens über die serielle Schnittstelle.

Gruß vom Bambi

Luckie 16. Okt 2009 12:34

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Du meinst den Login-Dialog von Windows? Der wird auf einem anderen Desktop aus einer anderen Windowsstation angezeigt. Beschäftige dich mal mit Windowsstations und Desktops und dem Sicherheitskontzept* von Windows.

*) Und bevor einer kommt, Windows kenne kein Sicherheitskonzept, doch das gibt es. ;)

himitsu 16. Okt 2009 12:34

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Da wirst du dir wohl 'ne eigene GINA (so hieß diese Krankheit doch?) einrichten müssen.

Ich bezweifle, daß du aus Sicherheitsgründen keinen Zugriff auf diesen "Desktop" bekommst.

TeronG 16. Okt 2009 12:39

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Mal so nebenbei ...
Warum willst du die denn bewegen?
Evtl. gibbet ja auch ne andere Lösung!?

Bambi 16. Okt 2009 12:47

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Zitat:

Da wirst du dir wohl 'ne eigene GINA (so hieß diese Krankheit doch?) einrichten müssen.
Das klingt nicht gerade einfach...

@TeronG: Natürlich muss es nicht so gehen, wenns ne andere Lösung gibt. Da bin ich sehr flexibel.

ZUr erklärung: ich habe sowas in die Richtung wie ein Touchpanel angeschlossen und bekomme per serieller Schnittstelle die Koordinaten, an die sich mein Mauszeiger bewegen soll (quais als Mausersatz). Wenn ich mich abmelde, brauch ich natürlich irgendeine Möglichkeit, dass ich mich auch wieder anmelde. Meine Idee war halt mit der Maus, aber wenns anders geht, warum nicht...
Evtl. mit keyboardsteuerung (da kann man ja mit den Pfeiltasten und Entertaste navigieren...). aber ob ich die befehle dann da auch hinschicken kann??

Bernhard Geyer 16. Okt 2009 13:00

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Zitat:

Zitat von Bambi
ZUr erklärung: ich habe sowas in die Richtung wie ein Touchpanel angeschlossen und bekomme per serieller Schnittstelle die Koordinaten, an die sich mein Mauszeiger bewegen soll (quais als Mausersatz).

Dann wäre ein Treiber für dich das richtige. Ist aber mit Delphi eigentlich noch viel schwerer zu realisieren.

himitsu 16. Okt 2009 13:02

Re: Mauszeiger im Anmeldebildschirm bewegen
 
joar, da du keinen Zugriff auf diese Umgebung bekommst, wirst du wohl auch keine "Tasten" dort hinsenden können.


der Grund:
sonst könnte ja einfach eine Anwendung dich im Windows ausloggen
und dann über diesen Anmeldebildschirm sich wieder einloggen und hätte dann Zugriff auf alles
(vorher könnte man noch das Password des Admins belauschen)


[add]
ich würde mich eventuell mal mit Olli/Assarbad in Verbindung setzen,
bzw. mich erstmal auf seiner Seite etwas umsehn (hier im Forum ist er auch unterwegs
und da gibt es bezüglich der Delphi-Referenz durchsuchenGINA und Ähnlichem auch einige Threads, aber ich hab leider grad vergessen, wie er sich hier grade nennt Embarassed )

mh166 16. Okt 2009 13:14

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Wäre auf jedenfall cool, wenn du uns hier dzau auf dem laufenden halten könntest, wie du damit vorankommst. Klingt nämlich nach ner sehr interessanten Sache, bin gespannt auf deine Lösung. :) (Zumindest drück ich dir die Daumen, dass du das hinbekommst ;) )

mfg, mh166

Bambi 16. Okt 2009 13:30

Re: Mauszeiger im Anmeldebildschirm bewegen
 
puh... dann werd ich wohl doch noch ne "backup-maus" hinhängen müssen...
danke aber trotzdem für eure Hilfe, bin jetzt um einiges schlauer.
und ihr habt verhindert, dass ich noch stundenlang sinnlos rumprobier...!

@mh166: ich glaube so viel zeit und durchblick habe ich nicht...

gruß vom bambi

wicht 16. Okt 2009 16:19

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Hm, wie sieht's denn mit DLL-Injektion aus? Das sollte doch klappen und ist noch verhältnismäßig einfach.
So ein GINA-Teil würde ich nicht mehr in Angriff nehmen, da seit Vista nicht mehr unterstützt (Da gibt's jetzt was anderes was auch einen komischen Namen hat :stupid: )

Bernhard Geyer 16. Okt 2009 16:32

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Zitat:

Zitat von wicht
Hm, wie sieht's denn mit DLL-Injektion aus? Das sollte doch klappen und ist noch verhältnismäßig einfach.

Oder ist evtl. wegen der damit verbundenen Sicherheitsprobleme im Startbildschirm nicht möglich.

wicht 16. Okt 2009 18:35

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Ich musste es dank dir natürlich dann ausprobieren. Funktioniert.

Bernhard Geyer 16. Okt 2009 19:09

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Zitat:

Zitat von wicht
Ich musste es dank dir natürlich dann ausprobieren. Funktioniert.

Dann könntest du den Threadersteller doch deinen Testcode als Vorlage überlassen ...

Dezipaitor 16. Okt 2009 19:19

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Unter XP kann ein Dienst die Maus steuern, sofern der Benutzer nicht FUS oder RDP verwendet(, sonst wie in Vista). In Vista muss man ein Programm als SYSTEM Benutzer über einen Dienst in die Sitzung des Benutzers (normal 1) starten. Dann geht's.

Es kann auserdem sein, dass man noch die Winstation und den Desktop setzen muss. (SetProcessWinstation und SetThreadDesktop)

wicht 16. Okt 2009 22:49

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Zitat:

Dann könntest du den Threadersteller doch deinen Testcode als Vorlage überlassen ...
Ich hätte es einfach richtiger formulieren sollen:
Ich habe es hinbekommen, in winlogon.exe, über den Weg wo es 100 Beispiele zu gibt (VirtualAllocEx, WriteProcessMemory, CreateRemoteThread), einen Thread zu starten.
Ihr könnt mich jetzt allerdings steinigen, wenn winlogon.exe auf dem falschen Desktop läuft. Vielleicht ist das auch der totale Holzweg, vielleicht war ich auch zu voreilig...

Schönes Wochenende :P

Dezipaitor 17. Okt 2009 10:47

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Ich müsste dich steinigen, wenn deine Injektion in Winlogon einen BSOD verursacht, weil du den Prozess zerstörst :wink:

wicht 18. Okt 2009 00:09

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Gottverdammt. Ich bin jetzt kein Profi in C, aber habe damit das Programm gebaut, das die DLL "injected". Die VM bekam dann immer so einen wunderschönen BSOD wie in alten Zeiten. Trotzdem hat keine der Funktionen einen Fehler zurückgegeben, und ich dachte mir "Hm, scheinbar bin ich zu doof, das mit C zu machen, aber wenn Windows abschmiert, wird der Thread wohl gestartet worden sein."
Nichts für ungut, verzeiht mir, gute Nacht. :mrgreen:

/Thread?

Bambi 24. Okt 2009 01:09

Re: Mauszeiger im Anmeldebildschirm bewegen
 
Zitat:

Zitat von wicht
Ich musste es dank dir natürlich dann ausprobieren. Funktioniert.

Ja wie, heißt das du konntest aus nem Programm raus den Mauszeiger im Anmeldebildschirm bewegen?!

Ich bitte höflichst um den Code dazu, des wäre ja genial...

Und was genau ist DLL-Injektion. Hab zwar a weng was drüber gelesen, aber wie des jetzt genau funktionieren soll ist mir noch nicht ganz klar.

Und was war das mit dem:
Zitat:

Zitat von Dezipaitor
Unter XP kann ein Dienst die Maus steuern, sofern der Benutzer nicht FUS oder RDP verwendet(, sonst wie in Vista). In Vista muss man ein Programm als SYSTEM Benutzer über einen Dienst in die Sitzung des Benutzers (normal 1) starten. Dann geht's.

Was ist denn FUS oder RPD und wie find ich raus "ob ich des verwende"? Wenn des so ginge wäre des ja noch relativ einfach!

Muss nächste Woche mal probieren...

Bis dann, gute Nacht und vielen Dnake für die Antworten!

Bambi


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz