Delphi: Dauer der Nichtbenutzung des PCs?



  • Hallo,

    ich programmiere gerade in Delphi und möchte eine Funktion einbauen, dass mein Programm eine bestimmte Aktion ausführt, wenn der Rechner meinetwegen 10 min vom Anwender nicht benutzt wird (der PC allgemein, also nicht das Programm).

    In etwa so, wie ICQ auch nach einer bestimmten Zeit automatisch in den "Away" Status geht.

    Das muss ich ja nicht über Hooks machen, oder doch? Gibts noch bessere Möglichkeiten?

    Danke!



  • Das hat wohl nicht direkt mit Delphi zu tun sondern dürfte eher was für's WinAPI-Forum sein!?



  • Möglicherweise. Delphi ist aber VCL.

    Sagen wir es anders: Der Computer schickt ja an alle Programme eine Nachricht, wenn er in den Standby geht.

    Wie kann ich die mit Delphi abfangen?



  • überprüf einfach ob sich die maus bewegt oder tasten gedrückt werden wenn nicht, dann soll er halt xxxx machen. So macht das auch icq.



  • Ne, das geht ja nur, wenn die Maus sich über meinem Fenster bewegt. Ich will aber, dass die Funktion nicht ausgeführt wird, wenn mein Fenster überhaupt nicht beachtet (also minimiert ist) und an anderen Sachen gearbeitet wird.



  • nein.

    hol dir z.B. einen timer setz ihn auf 1000 ms intervall. Erstelle eine globale variable mit dem namen xalt und eine mit dem namen yalt und eine mit den namen count. alle integer.
    das geht dann z.B. so: Code im onTimer ereignis:

    var p: tpoint;
    x,y: integer;
    begin
    getcursorpos(p);
    x:=p.x;
    y:=p.y;
    
    if x = xold and y = yold then
    inc(count)
    else
    count:=0;
    
    if count=600 then
    tuwas nach 10 minuten;
    
    xold:=x;
    yold:=y;
    

    so in etwa dürfte das gehen. ich hoffe du hast das grundprinzip verstanden.



  • Jo, das ginge, stimmt.

    Und was ist mit Tastatureingaben? Es soll ja Leute geben, die ziemlich lange ohne Maus arbeiten...



  • hallo,

    richtig, das system schickt an jedes prog eine nachricht bevor es in den ruhezustand geht. diese nachricht heißt wm_queryendsession und kann wie üblich in delphi abgefangen werden:

    procedure WMQueryEndSession(var Msg: TMessage); message WM_QUERYENDSESSION;

    damit kannst du auf den moment regieren indem der pc in den standby geht, ob das aber nach 10 min. der fall ist ist einstellungssache...

    mfg
    murph



  • Original erstellt von <murphy>:
    **hallo,

    richtig, das system schickt an jedes prog eine nachricht bevor es in den ruhezustand geht. diese nachricht heißt wm_queryendsession und kann wie üblich in delphi abgefangen werden:

    procedure WMQueryEndSession(var Msg: TMessage); message WM_QUERYENDSESSION;

    damit kannst du auf den moment regieren indem der pc in den standby geht, ob das aber nach 10 min. der fall ist ist einstellungssache...

    mfg
    murph**

    vorsicht, die message sendet er auch an ein programm das läuft und wenn windows runterfährt.



  • Ich warte immer noch auf einen Vorschlag, der nicht die WinAPI benutzt ... 😉

    [ Dieser Beitrag wurde am 18.01.2003 um 17:45 Uhr von Jansen editiert. ]


Anmelden zum Antworten