![]() |
Re: Close geht nicht zum Programmbeenden
Aber die Anwendung soll den Benutzer ja nur informieren, wenn sie schonmal geöffnet wurde, aber nicht ihm die Wahl lassen, ob er sie vielleicht doch 2mal offen haben will ;-)
|
Re: Close geht nicht zum Programmbeenden
Hallo Chegga,
und wo soll da der Unterschied zu dem hier sein (außer der sinnbefreiten Abfrage auf Ok, nachdem das Form sowieso geschlossen werden soll...)
Delphi-Quellcode:
Der sinnvollste (und auch normalerweise verwendete) Weg ist aber der, dass man einen Mutex o.ä. in der Projektdatei erstellt, und dort auch prüft ob er bereits existiert.
ShowMessage('Das Programm ist bereits geöffnet');
Close; //oder Application.Terminate, je nachdem was dir besser gefällt Greetz alcaeus |
Re: Close geht nicht zum Programmbeenden
Hi,
mit folgendem Code kannst du abfragen ob deine Anwendung schon läuft:
Delphi-Quellcode:
Falls sie schon läuft bekommst du eine Meldung.
unit u_Instanz;
interface implementation uses windows,Dialogs,sysutils, u_SBNBUCH; var mHandle: THandle; // Mutexhandle Initialization mHandle := CreateMutex(nil,True,'MEINEANWENDUNG'); if GetLastError = ERROR_ALREADY_EXISTS then begin // Anwendung läuft bereits ShowMessage('MEINEANWENDUNG wird schon ausgeführt!!!'); halt; end; finalization // ... und Schluß if mHandle <> 0 then CloseHandle(mHandle) end. Mfg André |
Re: Close geht nicht zum Programmbeenden
Die Anwendung soll von mehreren PCs im Netzwerk ausführbar sein. Keine Ahnung, ob Dein Quelltext auch im Netzwerk funktioniert. Aber ich habs jetzt erstmal über eine Textdatei gelöst, in der der Status, ein Timestamp und der User drinsteht.
|
Re: Close geht nicht zum Programmbeenden
Moin!
Warum "empfehlen" hier noch so viele User die Haudrauf Methode "Application.Terminate" ?? Das wurde doch nun schon mehrfach geklärt, das dieses Probleme bereitet - genauso wie ein "Halt()" Aufruf im FormCreate. Sprint hatte dazu auch schon die Erklärung geschrieben (Application.MainForm ist im FormCreate noch nicht gesetzt und dadurch wird die MainForm nicht wieder abgeräumt, bzw. nicht sauber...). Also, nehmt endlich Abstand sowas weiter zu empfehlen... Zum anderen: Die Mainform ist ein Teil der Applikation - das Hauptfenster. Nun ist die Frage warum noch das Hauptfenster angelegt wird, wenn man sich schon vorher einig sein könnte, das die Applikation beendet werden sollte. Daher wäre es doch eigentlich Blödsinn noch die MainForm anzulegen, oder? Also: Mutex, Named Pipe, FindWindow/PostMessage, etc - aber nicht unbedingt im FormCreate. MfG Muetze1 |
Re: Close geht nicht zum Programmbeenden
Eine Lösung würde sich hier mit:
initialization bzw. finalization anbieten. :zwinker: |
Re: Close geht nicht zum Programmbeenden
Hi,
Zitat:
MfG Marc |
Re: Close geht nicht zum Programmbeenden
:mrgreen: gar nicht gesehen :zwinker:
ich würde aber keinen mutex erzeugen, eher ein virtuelles Fenster :P |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 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