![]() |
Re: Doppelten Start eines Programmes verhindern
Delphi-Quellcode:
Und das wird nicht klappen, Delphi (zumindest mein D6) mekert dan rum und will das Project nicht mehr
Application.Title := 'hier muss ich denn text reinschreiben';´// <-- und diese auch
starten und oder laden. Die CreateMutex - Version ist ein wenig flexibler und sicherer. |
Re: Doppelten Start eines Programmes verhindern
Zitat:
ich hab nur das problem, das wenn das programm im tray liegt (also als symbol neben der uhr), das dann das wieder anzeigen der form nicht klappt... :pale: muss mal kucken ob ich des da noch irgendwie rauskrieg *gg* zur info ich arbeite mit cooltrayicon... |
Re: Doppelten Start eines Programmes verhindern
ok ich habs ^^
folgende zeile hab ich in turboPASCAL's code anpassen müssen
Delphi-Quellcode:
da stand vorher SW_RESTORE, und des hat er irgendwie nicht gepackt....
If IsIconic(FirstInstance) Then ShowWindow(FirstInstance, SW_SHOW)
mit SW_SHOW kriegt ers hin... nur das icon im tray wird nicht gekillt :( |
Re: Doppelten Start eines Programmes verhindern
Zitat:
In der Projekt Datei:
Delphi-Quellcode:
In einer Unit:
SetAppTitle('Ein Titel');
Delphi-Quellcode:
Und Delphi gibt Ruhe :???:
procedure SetAppTitel(const Titel:String);
begin Application.Title:=Title; end; |
Re: Doppelten Start eines Programmes verhindern
Zitat:
In diesem Fall mag HALT funktionieren. Allerdings ist das obergrauenvoller Programmierstil und genau deswegen hab ich auch bei jedem HALT Bauchschmerzen. Wenn man ein Programm abbricht, dann sollte es ordnungsgemäß beendet werden. Windows alle Aufräumarbeiten zu überlassen ist was für Scriptkiddies, die es nicht besser wissen. Wir wissen doch alle, daß dies nie in 100% aller Fälle funktioniert. "Nach mir die Sinnflut" trifft das recht gut. |
Re: Doppelten Start eines Programmes verhindern
Wieso werde ich in Verbindung mit "HALT" gebracht ? Wer verwendet denn so was ? :warn: Wenn schon, dann gleich mit GOTO. :mrgreen:
Es gibt zwei grundsätzliche Methoden, ein Programm nur einmal zu starten. Entweder beim Starten der zweiten Instanz eines Programmes die erste zu beenden und das eben wieder zu starten, egal wo das zuerst gestartete gerade war. Das hat meistens schwerwiegende Konsequenzen. Holzhammermethoden. 8) Das wäre wirklich "nach mir die Sintflut" mit HALT etc. Die andere ist : Semaphore setzen, wie von mir vorgeschlagen, um eben genau wieder da zu sein, wo der irgendwann zu bearbeitende Text oder sonstwas, der 5 Stunden vergessen wurde eben ist. Und zwar so ungefähr :
Delphi-Quellcode:
Vielleicht geht das mit Mutex auch. Kann allerdings aus eigener Erfahrung nur sagen, dass es mit Semaphoren genau so geht. Sehr viele Fragen und Hinweisversuche in zig Foren über Mutex, die diesem ca. 80 % "Fragen-Marktanteil" beschert haben geben mir aber zu denken. 8)
hWndMe := FindWindow(appClass,appTitle);
// falls andere Instanz existiert : diese in Vordergrund bringen, // Programm steht dann wieder genau an der Stelle, an der es verlassen wurde if (hWndMe <> 0) then begin BringWindowToTop(hWndMe); ShowWindow(hWndMe,SW_SHOWNORMAL); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:21 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