![]() |
Programmbeendigung verhindern
Hallo, Delphi-Praktiker,
wie kann ich verhindern, daß ein Benutzer über das "X" oben rechts oder mit alt-F4 ein Programm beenden kann ? Beste Grüße Klaus-Peter |
Re: Programmbeendigung verhindern
Was ist der Sinn davon das der User nicht mehr die auf seinem PC gestarteten Programme beenden kann? Das würde mich stören und das Programm sofort wieder löschen.
|
Re: Programmbeendigung verhindern
Im Ereignis OnCloseQuery die Variable CanClose auf False setzen.
|
Re: Programmbeendigung verhindern
Hallo, Bernhard,
wenn das Programm von einem berechtigten/ registrierten Benutzer gestartet wurde (und laufend vor sich hin arbeitet), soll es auch nur von einem solchen Benutzer wieder beendet werden können und nicht von jemandem, der zufällig auf den Bildschirm schaut. Klaus-Peter |
Re: Programmbeendigung verhindern
Geht es also um fremde Programme?
|
Re: Programmbeendigung verhindern
Und wie soll er das können, wenn der Button nicht mehr funktioniert.
entweder du schreibst im OnClose ereigns deines Formulares
Delphi-Quellcode:
dadurch kann das formular nur noch über Application.Terminate geschlossen werden. Das ganze Programm wird beendet
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin Action := caNone; end; Den Button selbst kannst du so deaktivieren
Delphi-Quellcode:
und so wieder aktivieren
EnableMenuItem(GetSystemMenu(Form1.Handle, False), SC_CLOSE, MF_BYCOMMAND or MF_ENABLED);
Delphi-Quellcode:
dabei kann das rogramm noch über Alt+F4 schliessen
EnableMenuItem(GetSystemMenu(Form1.Handle, False), SC_CLOSE, MF_BYCOMMAND or MF_GRAYED);
|
Re: Programmbeendigung verhindern
Hallo, Oregon,
ich verstehe den Sinn der Rückfrage nicht. Ich entwickle ein Programm, bei dem ein (kleiner) Schutz vor unberechtigtem Beenden eingebaut werden soll. Klaus-Peter |
Re: Programmbeendigung verhindern
Die Frage war so gemeint, ob du dein eigenes Programm so schützen willst oder ein Fremdes (z.B. Notepad oder sonst ein Programm)
|
Re: Programmbeendigung verhindern
Zitat:
|
Re: Programmbeendigung verhindern
Alternativ auch das Programm mit einer Sperrvorrichtung ausstatten. Alos eine kleine Passwortabfrage oder etwas vergleichbares. :)
|
Re: Programmbeendigung verhindern
- Zur Benutzung ist eine Anmeldung notwendig. Für Angemeldete (und damit Berechtigte) kann das Programm über einen Ende-Button komplett beendet werden.
- Das Programm soll allerdings in der Regel ständig (z.B. in minimierter Form) laufen, da ständig Verarbeitungen neu eintreffender Daten stattfinden, die nicht notwendigerweise einen Benutzereingriff notwendig machen. - Wenn Berechtigte ihre direkte Tätigkeit mit dem Programm beendet haben, sollen sie sich abmelden (Knopfdruck oder einige Zeit ohne Benutzeraktivität genügt) und damit den Zugriff auf das weiterlaufende Programm sperren. --> Daher die Ausgangsfrage. - Eine erneute korrekte Anmeldung ist in diesem Zustand natürlich möglich. - Deswegen über Windows den Zugriff zum ganzen Rechner zu sperren, ist nicht gewünscht. - Mir ist klar, daß das kein Schutz gegen Leute ist, die den Task-Manager benutzen können / wollen. Klaus-Peter |
Re: Programmbeendigung verhindern
Wenn es eh Hintergrundaktivitäten sind so wäre doch die realisierung als NT-Dienst auch 'ne Möglichkeit. Die GUI kommuniziert über named-pipes, ... mit dem Dienst und so bräuchte gar kein User angemeldet sein.
|
Re: Programmbeendigung verhindern
Kommt in dem Fall vielleicht das Fast User Switching in Frage?
Ansonsten wäre es vermutlich wirklich das sinnvollste, per OnCloseQuery zu entscheiden, was genau zu tun ist. Wenn ich dich richtig verstehe, meldet man sich bei diesem Programm an und auch wieder ab, dann läuft es jedoch weiter und soll in diesem Zustand nur beendet werden können, wenn sich jemand wieder erneut anmeldet, oder? Also hast du ja die Information Angemeldet/Nicht angemeldet (bzw. mit entsprechenden Rechten angemeldet / nicht mit entsprechenden Rechten angemeldet) und kannst diese im OnCloseQuery abfragen und entsprechend bearbeiten. Oder aber das Programm führt seine Dinge in einem Dienst, den ein normaler Benutzer somit nicht beenden kann? Edit: Sowas, schreibt Bernhard genau das mit dem Dienst, während ich es denke. Böser Bernhard. |
Re: Programmbeendigung verhindern
Zitat:
|
Re: Programmbeendigung verhindern
Das mit dem Dienst habe ich mir auch kurz überlegt. Das ist sicher eine Alternative, aber 1. müßte ich dann zusätzlich wieder ein Programm schreiben, das die Bedienung ermöglicht und 2. kenne ich mich mit dem Einhängen eines Programms als Dienst noch nicht aus.
Ich werd's (zunächst) über den genannten Weg versuchen. Die Umstellung auf einen Dienst / Service bleibt im Hinterkopf. Vielen Dank, Klaus-Peter |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz