Programm automatisch schließen bei Inaktivität

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Programm automatisch schließen bei Inaktivität

    Guten Tag,

    Ich würde gerne ein erstelltes Programm bei einer Inaktivität (also wenn man nicht am PC ist) beispielsweise von 10 Minuten automatisch schließen wollen.
    Hat jemand einen Tipp oder kann mir jemand ein Beispiel anhand eines Codes veranschaulichen?

    Über eine Antwort wäre ich dankbar :) !

    Thema verschoben; Das Thema wird automatisch dort erstellt, wo man sich befindet, wenn man auf [* Neues Thema] klickt. ~VaporiZed

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Ein merkwürdiges Programm … Soll es ggf. im Hintergrund laufen?
    Falls nicht, würd ich wohl im Form_MouseMove-Event- und oder KeyDown-EventHandler einen Timer stoppen und wieder starten und wenn der Timer, eingestellt auf 10 Minuten, tickt, dann in dessen Tick-EventHandler Me.Close ausführen. Geht aber bestimmt noch eleganter. Da hatten wir doch erst vor ein paar Monaten was ähnliches …, ah, gefunden: Abfrage ob Aktivität am PC vorhanden
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Vielen Dank für deine Antwort. Der Ansatz mit "MouseMove-Event" finde ich Prima.
    Könntest du mir auch kurz sagen wie genau ich das machen soll? Habe sowas auch noch nicht programmiert. Ich würde es mit einer if-Anweisung machen wollen.
    Also wenn Zeiger sich innerhalb "der Maske" bewegt Timer aus. Wenn sich der Mouse Zeiger innerhalb "der Maske" nicht mehr bewegt Timer an.
    Hast du ein Beispiel mit einer If-Anweisung für MouseMove-Event?

    Vielen Dank schon mal.

    CJ-VB schrieb:

    Wenn sich der Mouse Zeiger innerhalb "der Maske" nicht mehr bewegt Timer an.
    Das gibt es so nicht, da es ein direktes keine-Aktion-Event nicht gibt. Es gibt nur es-passiert-was-Event. Du kannst nur so programmieren, dass Du eben bei MouseMove den Timer aus und wieder anmachst. Dadurch wird er neugestartet, ohne dass das Tick_Event ausgelöst wird. Zeig mal, wie Du einen Timer im Form_MouseMoveEvent ausmachst. Dann klärt sich der Rest sehr schnell.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Danke für die Antwort. Nur habe ich mit "MouseMoveEvent" nicht so viel gearbeitet. Wenn ich den Timer in der Form habe und den soweit konfiguriert habe, dann muss ich "MouseMoveEvent" doch mitteilen >> Hör zu wenn was passiert dann stoppe den Timer, wenn nichts passiert dann starte den Timer erneuert oder?
    Hast du ein kurzes Beispiel - Wie ich das am besten im Code schreiben kann?
    Über deine Hilfe wäre ich sehr dankbar.
    Na, das gehört aber schon noch zu den Grundlagen, wie man einen EventHandler erstellt.
    Variante 1: Geh in den Codeeditor, wähle dann oben in der mittleren ComboBox (DeinForm-Ereignisse), dann in der rechten ComboBox MouseMove


    Dadurch wird Dein EventHandler erstellt, in dem Du den Timer stoppst und wieder startest

    VB.NET-Quellcode

    1. DeinTimer.Stop
    2. DeinTimer.Start


    Alternativ kannst Du den EventHandler auch über den Designer erstellen. Dazu das Form auswählen und dann im Eigenschaftenfenster die EventHandlerliste auswählen, den richtigen EventHandler wählen und Doppelklick drauf.

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Ich bedanke mich ganz herzlich. Es hat funktioniert! Ich habe die ganze Zeit gedacht, dass ich eine "If-Anweisung" benötige, nur wusste ich nicht genau wie ich diese zu schreiben habe, da ich mit dem "MouseMoveEvent" noch nicht so viel Berührungspunkte hatte.
    Standessen brauche ich gar keine If-Anweisung um das Problem zu lösen :D .
    Jetzt habe ich auch verstanden was du mit Zitat "Es gibt nur es-passiert-was-Event" meintest.

    Vielen Dank nochmal :)

    CJ-VB schrieb:

    "MouseMoveEvent"
    brauchst Du nicht.
    Das Zauberwort, nach dem Du suchst, heißt Idle Time.
    Dazu findest Du beliebig viel, z.B.:
    docs.microsoft.com/de-de/offic…r-idle-time-or-inactivity
    bytes.com/topic/net/answers/64…et-application-idle-timer
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!