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 Ist der Benutzer aktiv am Rechner / IdleTime / Bildschirmschoner abfragen (https://www.delphipraxis.net/162321-ist-der-benutzer-aktiv-am-rechner-idletime-bildschirmschoner-abfragen.html)

Cyberaxx 17. Aug 2011 11:44

Ist der Benutzer aktiv am Rechner / IdleTime / Bildschirmschoner abfragen
 
Hallo

Der Titel mag nicht viel aussagen aber ich weiß gerade nicht wie ich es besser kurz ausschreiben soll.

Wie fange ich am besten an...
Ich habe mir eine Relaiskarte gebaut die mittels RS232 angesteuert wird. Auf dem Rechner wird beim Starten ein Programm ausgeführt welches sich um die Relaiskarte kümmert. So schalten sich beim Hochfahren gewisse Ports ein, in meinem Fall die Monitore. Wenn das Sstem heruntergefahren wird oder in den StanBy Modus wechselt, werden automatisch die Ports abgeschaltet, hier unteranderem Licht, Drucker und Boxen.
Es soll mit aber auch den Bildschirmschoner ersetzen. Sprich nach einer definierten Zeit X die Ports ebenfalls abschalten.
Bisher habe ich das über einen Timer gelöst der die Mauskoordinaten Abfragt. Funktioniert soweit auch super nur fehlen mir jetzt dazu noch die Maustasten und natürlich tastatureingaben. Derzeit schalten sich sonst auch die Ports ab wenn ich einfach nur einen Text schreibe ohne die Maus zu bewegen.
Habe mich schon umgesehen aber es kommen hier meist nur Timer gesteuerte oder Hooks in Frage. Das möchte ich eher weniger.
Gibt es da irgend eine Möglichkeit abzufragen seit wann keine Eingaben per Tastatur und Maus mehr gekommen sind? Dessen zeit ich einfach dann nur Abfrage?

Bildschirmschoner ist bei mir deaktiviert.
Mir war auch schon die Idee gekommen mein Programm mit einem eigenen Bildschirmschoner auszustatten, der dann mit meinem Programm kommuniziert, wenn der Bildschormschoner aktiv wird aber da muss es doch auch sicher etwas einfacheres geben als Kommunikation zwischen zwei einzelnen Programmen?

Gruß
Daniel

Luckie 17. Aug 2011 11:50

AW: Ist der Benutzer aktiv am Rechner / IdleTime / Bildschirmschoner abfragen
 
Falscher Ansatz: GetLastInputInfo ist das Stichwort: http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx

himitsu 17. Aug 2011 12:38

AW: Ist der Benutzer aktiv am Rechner / IdleTime / Bildschirmschoner abfragen
 
Wobei mir schon seit einer ganzen Weile eine etwas ähnliche frage beschäftigt.
(hatte aber nie die Zeit/Muse da mal genauer nachzusehn)

Terminal Server:
- Gild GetLastInputInfo für den Benutzeraccount, in welchem das Programm läuft, oder für alle Benutzer?
- Bekommt man irgendwie einfach mit, ob gerade wer eingeloggt ist, da wo das Programm läuft?




Das mit Bildschirmschoner abfragen ist soeine Sache, denn den kann man auch manuell Starten und praktisch muß er sich auch nicht beenden, wenn jemand was mit der Maus/Tastatur macht.

angos 17. Aug 2011 14:30

AW: Ist der Benutzer aktiv am Rechner / IdleTime / Bildschirmschoner abfragen
 
Zitat:

Zitat von himitsu (Beitrag 1117508)
Gild GetLastInputInfo für den Benutzeraccount, in welchem das Programm läuft, oder für alle Benutzer?

Aus Luckies Link: This function is useful for input idle detection. However, GetLastInputInfo does not provide system-wide user input information across all running sessions. Rather, GetLastInputInfo provides session-specific user input information for only the session that invoked the function.

Cyberaxx 17. Aug 2011 21:22

AW: Ist der Benutzer aktiv am Rechner / IdleTime / Bildschirmschoner abfragen
 
Hallo und Sorry das ich mich jetzt erst wieder zu Wort melde.

Ich bedanke mich für die schnelle Antwort Luckie.
Genau nach sowas habe ich gesucht. Es ist gerade zu perfekt und ohne großartiges Programmieren von Hocks oder sonstigen Kram.
Mal eine Echt geile Info von der API. :)

Direkt eingebaut und es funktioniert.

Damit hätte sich dann die offene Frage ergeben. Danke nochmals.

@dit
@Luckie
Ja das stimmt schon das es ein falscher Ansatz wäre, mir ist aber auf anhieb nichts besseres in den Sinn gekommen. Der eigene Bildschirmschon sendet eine Nachricht ans Interface "nu ist Idle" und damit hätte das Interface die Ports abgeschaltet.

@himitsu
Ja aber das wäre ja meine programmierarbeit gewesen. Ich hätte ihn dementsprechend einstellen müssen. Es sollte ja nicht auf jeden Bildschirmschoner reagiert werden, sondern auf den eigenen der eine Nachricht verschickt.

Die Lösung ist natürlich um eines eleganter und arbeitsschonender.

Gruß
Daniel


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:25 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