Announcement

Collapse
No announcement yet.

Programm soll automatisch schließen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Programm soll automatisch schließen

    Wie kann man ein Programm, nachdem es einige Minuten keine Ereignisse (Mausklicks, Tastaturereignisse) erhalten hat, übergeordet schließen. Dabei soll dies möglich sein, egal welches Formular zu diesem Zeitpunkt geöffnet ist.

  • #2
    Schaue mal nach dem Objekt ApplicationEvents. Da gibt es das Ereignis OnIdle. Vielleicht kommst Du damit weiter?<p>
    Schöne Grüße, Mario Noac
    Schöne Grüße, Mario

    Comment


    • #3
      Kann jemand eine Lösung aufzeigen? Komme mit ApplicationEvents und OnIdle leider nicht weiter.
      <BR>
      Gruß Gunna

      Comment


      • #4
        Wieso nicht?

        Grüße Joche

        Comment


        • #5
          Hallo,

          das Ereignis OnIdle ist für die Verarbeitung von bestimmten Sachen im Hintergrund vorgesehen (d.h. wenn die Anwendung nichts besseres zu tun hat). Auch ApplicationEvents führt nicht zum Ziel, da ein laufender Prozess mit einem sichtbaren Hauptfenster von Windows regelmässig mit Botschaften eingedeckt wird.

          Statt dessen muss das Hauptfenster (oder der gerade aktive Dialog) selbst über einen Timer die Benutzeraktionen (Tastatureingaben, Mausklicks) auswerten, um beim Überschreiten der Wartezeit die Anwendung über Close zu beenden. Jede Benutzeraktion setzt den Timer zurück

          Comment


          • #6
            @Jochen:<BR>
            Man könnte zwar mit OnIdle einen Timer starten, aber wie soll dieser gestoppt werden, wenn eine Tastatur- oder Mausereignis eintritt?
            Ein systemweiter Hook geht nicht, weil ich Aktivitäten in MEINEM Programm ermitteln will.
            <BR>
            <BR>
            @Andreas:<BR>
            Meine Überlegungen wurden von dir bestätigt. Ziel ist es, nach einer bestimmten Zeit der Inaktivität eine Aktion auszuführen, z.B. Fenster/Prog. schließen, aus DB ausloggen o.ä.
            Dafür wäre eine ZENTRALE Stelle zur Auswertung der Tastatur- und Mausaktivitäten interessant.
            ABER WO IST DIE?
            <BR>
            <BR>
            Hilfe erwünscht.
            <BR>
            Gruß Gunna

            Comment


            • #7
              Hallo,

              &gt;ABER WO IST DIE?

              wenn Performanz keine Rolle spielt, kann sich die Anwendung in <b>Application.OnMessage</b> einklinken (entweder von Hand oder über TApplicationEvents), um dort die Tastatus- und Maus-Botschaften auszuwerten:
              <pre>
              <b>procedure</b> TForm1.ApplicationEvents1Message(<b>var</b> Msg: tagMSG;
              <b>var</b> Handled: Boolean);
              <b>begin</b>
              <b>if</b> Msg.Message = WM_CHAR <b>then</b>
              Listbox1.Items.Add(<font color="#9933CC">'Tastatur erkannt'</font>);
              <b>end</b>;
              </pre>
              Wie ein Test zeigt, wird die Listbox im Hauptfenster auch dann gefüllt, wenn der Anwender seine Eingaben in einem anderen (modal angezeigten) Formular macht. Da aber das Ereignis <b>OnMessage</b> (genauer gesagt, die beim Erzeugen des TApplication-Hilfsfensters angemeldete Fensterprozedur) von Win32 sehr häufig bedient wird, sollte der dort untergebrachte Teil so wenig Rechenzeit wie nur möglich benötigen, wenn die Anwendung nicht mit angezogener Handbremse laufen soll

              Comment


              • #8
                Hi,

                also ich hatte mir das eher über KeyPreview vorgestellt, aber Andreas Vorschlag ist deutlich eleganter und mit viel weniger Aufwand verbunden...

                Grüße Joche

                Comment


                • #9
                  @Andreas: Danke für den Tip.
                  <BR>
                  Wenn man noch die Maus-Tasten integrieren will, einfach noch die Mause-Ereignisse $A1..$A9 + $201..$209 überprüfen, bei Maus-Bewegungen $A0 + $200, das wars.
                  <BR>
                  Gruß Gunna

                  Comment

                  Working...
                  X