![]() |
Zitat:
|
Wenn ichs über die ProcessID mach (Code von Luckie) dann bekommen beide Instanzen die gleiche ID :roll: :cry: :?:
|
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: |
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. |
welche Prozedur soll ich in die oncreate-routine einfügen?
|
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. |
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: |
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:
|
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. |
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. |
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