![]() |
Programm zurücksetzen
Guten Moin,
Ich möchte einen Button erstellen, der mein Programm auf den Anfangszustand zurück setzt? ich hab ne Idee
Delphi-Quellcode:
oder so etwas in der Art
procedure TForm1.Button3Click(Sender: TObject);
begin form1.close; form1.create; end; nur irgendwie will das ned :( Gruß Kacze |
Re: Programm zurücksetzen
Je nach dem ob dein Programm lange braucht zum starten würde ich es per ShellExecute laden und dann das alte schließen... Ist zwar kein guter Programmierstil, aber immerhin eine Lösung :wink:
|
Re: Programm zurücksetzen
:gruebel: Und warum machst du es nicht einfach manuell? Setze alle Captions neu, leere Listboxen, etc und du hast das alles viel schneller als wenn du das Programm erst neu startest.
//Edit: Zitat:
Zitat:
|
Re: Programm zurücksetzen
^
| Oder so. Schreib doch einfach eine procedure die alles wieder auf den Normalzustand zurücksetzt. Ist besser als das Programm neu zu laden... |
Re: Programm zurücksetzen
Hi,
folgende Procedure startet deine Anwendung neu oder beendet sie:
Delphi-Quellcode:
Gruß, Frank
procedure ForceKillApplication(ARestart: boolean = False);
var AStartInfo: TStartupInfo; AProcInfo: TProcessInformation; begin if ARestart then begin GetStartupInfo(AStartInfo); FillChar(AProcInfo, SizeOf(TProcessInformation), #0); CreateProcess(nil, GetCommandLine, nil, nil, False, CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil, PChar(GetCurrentDir), AStartInfo, AProcInfo); end; TerminateProcess(GetCurrentProcess, 1); end; |
Re: Programm zurücksetzen
Danke,
es hat funktioniert! Gruß Kacze! |
AW: Programm zurücksetzen
Code:
Gibt es auch noch die Möglichkeit einen Startparameter der Funktion zu übergaben und wo muss ich die Information bei CreateProcess plazieren?
procedure ForceKillApplication(ARestart: boolean = False);
var AStartInfo: TStartupInfo; AProcInfo: TProcessInformation; begin if ARestart then begin GetStartupInfo(AStartInfo); FillChar(AProcInfo, SizeOf(TProcessInformation), #0); CreateProcess(nil, GetCommandLine, nil, nil, False, CREATE_NEW_PROCESS_GROUP + NORMAL_PRIORITY_CLASS, nil, PChar(GetCurrentDir), AStartInfo, AProcInfo); end; TerminateProcess(GetCurrentProcess, 1); end; |
AW: Programm zurücksetzen
Zitat:
Ansonsten würde ich jedem davon abraten diesen Schnippsel zu verwenden. Die folgenden Events werden durch das Nutzen dieser Funktion nicht aufgerufen:
Code:
- OnCloseQuery
- OnClose - OnDestroy |
AW: Programm zurücksetzen
Natürlich nicht.
TerminateProcess beendet die Ausführung umgehen, also schießt die Anwendung ab. > SendMessage+WM_CLOSE ans Hauptfenster oder PostThreadMessage+WM_CLOSE an den MainThread. > bzw., da man hier im eigenen Prozess ist, Application.MainForm.Close oder Application.Terminate Zitat:
Startparameter: GetCommandLine sind die Startparameter und der Anwendungsname, der aktuell laufenden Anwendung. Willst du das ändern, dann ParamStr(0) oder Application.ExeName für die Anwendung und für die eigenen Parameter siehe 3. Parameter bei ![]() |
AW: Programm zurücksetzen
Zitat:
Daher meine Anmerkung. Ich würde einen großen Bogen um diese Funktion machen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:17 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