Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Programm beenden (https://www.delphipraxis.net/5289-programm-beenden.html)

Stanlay Hanks 1. Jun 2003 08:43

Zitat:

Zitat von Moyyer
und wie soll ich das machen außer auf das X zu klicken :?:

Es gibt hier im Forum viele Beiträge, wie man einen Prozess/ ein Programm beendet... (handle z.B)

RomanK 1. Jun 2003 10:34

Wenn ichs über die ProcessID mach (Code von Luckie) dann bekommen beide Instanzen die gleiche ID :roll: :cry: :?:

Moyyer 1. Jun 2003 12:16

Ich öffne die datei mut meinem programm. Ich will nur eine instanz von meinem programm haben. Wenn ein zweites geöffnet wird soll es die parameter an das erste schicken und danach beenden werde. gibt es da eine funktion?
Ich kenn mich da überhaupt nicht aus! :oops:

Illuminator-23-5 1. Jun 2003 12:35

Wenn ich alles richtig verstanden habe, dann müsste das folgendermaßen zu lösen sein:
Du könntest mit der Funktion versuchen, das Fenster zu beenden. Wenn das Programm nicht beendet werden kann, brauchst du es nicht zu beenden, weil es nicht geöffnet ist. Du brauchst somit nur diese Prozedur in die OnCreate-Routine einfügen.

Moyyer 1. Jun 2003 12:40

welche Prozedur soll ich in die oncreate-routine einfügen?

Christian Seehase 1. Jun 2003 18:01

Moin Moyyer,

so eine Abfrage ist am Besten in der Projektdatei (DPR) untergebracht.
Such' mal hier im Forum nach Mutex und WM_COPYDATA.
Da solltest Du einiges passendes finden.

Moyyer 1. Jun 2003 21:14

Ich habe mich über diese Funktion informiert, wie du es gesagt hast und hatte auch gleich das richtige gefunden.

IHR SEIT EINFACH SPITZE! Diese Funktion suche ich schon seit Monaten.

Vielen Dank!!! :hello: :D :coder:

Walter vdV 30. Okt 2003 20:03

Re: Programm beenden
 
Jetzt muss ich doch meinen Senf noch dazu geben. Also die Funktion 'TerminateProcess' wird eigentlich vom TaskManager verwendet um z.B. ein abgestürztes Programm zu beenden, ist also das ultimative killen eines Prozesses. Manche Programme reagieren darauf unwirsch, z.B. beim nächsten Start mit der Meldung 'Programm wurde nicht korrekt beendet'. DLL's die von diesen Programmen verwendet werden, werden nicht korrekt beendet, sondern bleiben "offen". Das Verhalten kann man z.B. sehen wenn sich ein Programm im SysTray einnistet, das Icon bleibt in der Systray (verschwindet zwar wenn man mit der Maus drüberfährt). Also ich bezweifle, dass diese Funktion die richtige Art der Programmierung ist, insbesondere wenn man sie öfters verwendet. Leider weiss ich auch nichts Besseres. Eigentlich müsste nach der Literatur 'ExitProcess' das richtige sein. Aber die Funktion habe ich noch nicht recht verstanden, bis jetzt wurde nur immer mein eigenes Programm beendet. Trotz meiner vorigen 'klugen' Worte, wäre ich dankbar wenn jemand was Besseres weiss. :wall:

Christian Seehase 30. Okt 2003 20:10

Re: Programm beenden
 
Moin Walter,

erst einmal herzlich willkommen hier in der Delphi-PRAXiS.

Statt der "brutalen" Methode mit TerminateProcess könnte man auch versuchen, das Handle des Hauptfensters zu bekommen, und dorthin dann ein WM_CLOSE oder WM_SYSCOMMAND mit SC_CLOSE schicken. Das wäre fast so, als würde man das X anklicken.

Walter vdV 30. Okt 2003 20:37

Re: Programm beenden
 
Hallo Christian,
erst mal danke für die Begrüssung u. die schnelle Antwort. Noch eine Frage hat ein Programm das sich nur in der SysTray einnistet (z.B einen Virenschutz) eigentlich auch ein Fensterhandle? (bevor ich umsonst rumprobiere).
Gruss Walter
PS Ich bin zwar aus Bayern, aber 'Moin, Moin' verstehe ich noch
:thuimb:


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:50 Uhr.
Seite 3 von 4     123 4      

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