Windows Applikation nach 10 Minuten idle beenden
Hallo,
Problem:
User A nutzt Applikation A um auf die Dateien a-m zuzugreifen.
User B möchte Änderungen an den Dateien a-m vornehmen, was daran scheitert das User A Applikation A noch offen hat, aber
nicht mehr nutzt.
Lösung:
ein script was im Hintergrund läuft und Applikation A darauf überprüft ob sie idlet und wenn ja, nach 10 Minuten idle beendet.
Leider fehlen mir für VB/VBS die notwendigen Kenntnisse oder womit würde man dies normalerweise realisieren?
danke.
Problem:
User A nutzt Applikation A um auf die Dateien a-m zuzugreifen.
User B möchte Änderungen an den Dateien a-m vornehmen, was daran scheitert das User A Applikation A noch offen hat, aber
nicht mehr nutzt.
Lösung:
ein script was im Hintergrund läuft und Applikation A darauf überprüft ob sie idlet und wenn ja, nach 10 Minuten idle beendet.
Leider fehlen mir für VB/VBS die notwendigen Kenntnisse oder womit würde man dies normalerweise realisieren?
danke.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 57576
Url: https://administrator.de/contentid/57576
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
1 Kommentar
Anwendungen können auf 2 Arten beendet werden
- Saubere Methode: durch Senden einer WM_SYSCOMMAND / SC_CLOSE Nachricht, dann kann es passieren, dass der Anwender gefragt wird, ob er Änderungen speichern will - er muss also darauf reagieren.
- "Brutale" Methode: Durch Beenden des Prozesses - der Anwender erhält keine Rückmeldung über eventuell nicht gespeicherte Dateien und gf. offene Handles werden nicht ordnungsgemäß geschlossen!
Wie stellt man fest, ob eine Anwendung 10 min lang nicht verwendet wurde? - Einzige Möglichkeit, die mir einfällt ist es, mittels SetWindowsHookEx einen Filter zu installieren, der Maus- und Tastatureingaben der Anwendung A abfängt, an eine von dir programmierte DLL weiterreicht, sie dort mit dem letzten Zeitstempel vergleicht, und anschließend an die Anwendung A weiter leitet. Sollten seit dem letzten Ereignis 10 min vergangen sein, beendest du die Anwendung A (Senden der WM_SYSCOMMAND/SC_CLOSE Nachricht [sauber] oder KillProcess [wirkungsvoll, aber möglicherweise gefährlich]).
Allerdings müsste die Funktion, die das überprüft, in einer DLL "sitzen"; es sind also Kenntnisse im Programmieren von DLLs erforderlich. Mit VB / VBS habe ich leider keine Erfahrung; würde für so etwas eher C++ vorsehen.
- Saubere Methode: durch Senden einer WM_SYSCOMMAND / SC_CLOSE Nachricht, dann kann es passieren, dass der Anwender gefragt wird, ob er Änderungen speichern will - er muss also darauf reagieren.
- "Brutale" Methode: Durch Beenden des Prozesses - der Anwender erhält keine Rückmeldung über eventuell nicht gespeicherte Dateien und gf. offene Handles werden nicht ordnungsgemäß geschlossen!
Wie stellt man fest, ob eine Anwendung 10 min lang nicht verwendet wurde? - Einzige Möglichkeit, die mir einfällt ist es, mittels SetWindowsHookEx einen Filter zu installieren, der Maus- und Tastatureingaben der Anwendung A abfängt, an eine von dir programmierte DLL weiterreicht, sie dort mit dem letzten Zeitstempel vergleicht, und anschließend an die Anwendung A weiter leitet. Sollten seit dem letzten Ereignis 10 min vergangen sein, beendest du die Anwendung A (Senden der WM_SYSCOMMAND/SC_CLOSE Nachricht [sauber] oder KillProcess [wirkungsvoll, aber möglicherweise gefährlich]).
Allerdings müsste die Funktion, die das überprüft, in einer DLL "sitzen"; es sind also Kenntnisse im Programmieren von DLLs erforderlich. Mit VB / VBS habe ich leider keine Erfahrung; würde für so etwas eher C++ vorsehen.