Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Wie lange keine Benutzereingaben mehr erfolgt sind(user afk) (https://www.delphipraxis.net/52121-wie-lange-keine-benutzereingaben-mehr-erfolgt-sind-user-afk.html)

MR321 24. Aug 2005 02:29


Wie lange keine Benutzereingaben mehr erfolgt sind(user afk)
 
Hallo,
brauche eine Funktion die ausliest wie lange keine Benutzereingaben (Tastatus, Maus) mehr erfolgt sind.
Oder etwas wie, nach 5 Minuten Inaktivität führe Funktion xy aus.

Habe mir überlegt, dass Windows den Wert irgendwo speichern wird. Denn Windows aktiviert doch schließlich auch den Bildschirmschoner oder irgendwelche Energiesparoptionen wie Monitor aus.
Die Frage ist wie komme ich an den Wert?

Es muss doch eine Lösung geben ohne den ganzen Kram selbst zu machen und Maus- und Tastaturhooks zu installieren.

Luckie 24. Aug 2005 02:36

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Och Mann, warum fragt ihr nach dieser Funktion alle zwei Monat. Das ist genau die Zeitspanne, die ich brauche, um sie wieder zu vergessen. :roll:

Wenn es nur ab Windows 2000 funktionieren muss: MSDN-Library durchsuchenGetLastInputInfo.

Delphi-Quellcode:
function SecondsIdle: DWord;
var
   liInfo: TLastInputInfo;
begin
   liInfo.cbSize := SizeOf(TLastInputInfo) ;
   GetLastInputInfo(liInfo) ;
   Result := (GetTickCount - liInfo.dwTime) DIV 1000;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := Format('System IDLE last %d seconds', [SecondsIdle]) ;
end;
Im Label wird angezeigt, wie viele Sekunden das System sich im Idle-Zustand befindet.

MR321 24. Aug 2005 04:22

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Danke dir!
Hatte die Code-Library danach durchsucht. Und irgendwelche Suchenfunktionen konnte ich nicht verwenden, da mir keine passenden Suchbegriffe eingefallen sind.

Privateer3000 8. Dez 2007 19:30

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Hallo allerseits,

wenn ich untenstehenden Tipp verwenden will
startet die Anwendung mit einer Zugriffsverletzung.
Delphi selber startet die Anwendung einwandfrei (F9).
Nach der Zugriffsverletzung funktioniert zwar alles
aber trotzdem muss sie ja eine Ursache haben.


Zitat:

Zitat von Luckie
Delphi-Quellcode:
function SecondsIdle: DWord;
var
   liInfo: TLastInputInfo;
begin
   liInfo.cbSize := SizeOf(TLastInputInfo) ;
   GetLastInputInfo(liInfo) ;
   Result := (GetTickCount - liInfo.dwTime) DIV 1000;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  Label1.Caption := Format('System IDLE last %d seconds', [SecondsIdle]) ;
end;


Privateer3000 10. Dez 2007 18:36

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Ich hab es jetzt mehrmals getestet.
Getlasinputinfo greift ja auf die user32.dll zu,
diese ist auch vorhanden.
Getestet unter w2k und xp. immer das gleiche Ergebnis.

Sobald ich die funktion implementiere, startet die Anwendung
mit einer Fehlermeldung...

SirThornberry 10. Dez 2007 20:14

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
kommt die av beim start des programmes oder erst bei aufruf des Timer-Events?

Privateer3000 10. Dez 2007 20:21

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
da der timer (int. 1000) von anfang an läuft
nehm ich es mal an.

himitsu 11. Dez 2007 09:47

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
was ist das für eine Fehlermeldung?

Privateer3000 11. Dez 2007 16:25

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Liste der Anhänge anzeigen (Anzahl: 1)
das lustige an der Sache ist,
wenn die Anwendung geschlossen wurde und
wieder gestartet wird kommt keine Fehlermeldung.
Quasi nur nach Systemstart und anschliessend Anwendungsstart.

RavenIV 13. Dez 2007 09:43

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Also als erstes würde ich es mal mit try..except versuchen.
Dann im except den Text der Exception ausgeben.

Weiterhin einige Debugwerte einbauen.
Evtl auch nach jeder Codezeile eine Messagebox ausgeben.
So kannst Du nachverfolgen, wo genau es knallt.
Und dann hst Du einen Startpunkt für die Fehlersuche.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:51 Uhr.
Seite 1 von 2  1 2      

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