Delphi-PRAXiS

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.

Luckie 13. Dez 2007 09:54

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Was für Code wird noch ihm Timer-Ereignis ausgeführt?

Privateer3000 13. Dez 2007 12:34

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Das genau wird im Timer ausgeführt.
Ich ahne worauf du hinaus willst Luckie
Delphi-Quellcode:
procedure TKasse.pennerTimer(Sender: TObject);
var stze,suze:DWord;
begin
stze:=60;
suze:=schoneran;
if suze > stze then
schoner.bildschoner.Show;
end;

Luckie 13. Dez 2007 12:47

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Das Objekt schoner existiert?

Privateer3000 13. Dez 2007 13:12

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
ist eine Unit, ja
aber wahrscheinlich noch nicht zu dem zeitpunkt
wie die main erstellt wird, richtig?

Luckie 13. Dez 2007 13:16

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Gut dann die Frage, existiert das Objekt bildschoner?

Privateer3000 13. Dez 2007 13:32

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
schoner.bildschoner ist doch ein und dieselbe unit
und schoner steht in "uses".
die Unit schoner:
Delphi-Quellcode:
unit schoner;
...
var
  bildschoner: Tbildschoner;
...

gmc616 13. Dez 2007 15:50

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Zitat:

Zitat von Privateer3000
schoner.bildschoner ist doch ein und dieselbe unit

Mag sein.

Aber was ist denn TBildschoner? evtl. eine Klasse TForm?

Ist bildschoner zum Zeitpunkt des Timers schon Createte?

Warum startest du den pennerTimer von Beginn an und nicht erst dann, wenn du sicher bist, dass bildschoner erzeugt wurde?

OT: Grüße aus Jena nach Jena :zwinker:

Privateer3000 13. Dez 2007 20:01

Re: Wie lange keine Benutzereingaben mehr erfolgt sind(user
 
Ja danke, genau das hab ich jetzt gemacht.
Ich denke mal jetzt ist das Prob gelöst...
Danke an alle

Grüße nach aus Lobeda :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr.

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