Hey there
Hier eine Komplettlösung für das oft behandelte Thema, nur eine Anwendungsinstanz zuzulassen und dabei die Kommandozeilen-Parameter an die bereits laufende Instanz weiterzugeben.
OneInstance.pas- Einfache Anwendung: Die Unit muss lediglich in einer beliebige Uses-Klausel (Optimal: In der Projektdatei) aufgeführt werden, um weitere Anwendungsinstanzen zu verhinden. Diese werden dabei frühstmöglich beendet, sodass Formulare und andere Ressourcen gar nicht erst geladen werden.
- Über den Prozedurenzeiger NewInstProc kann eine Ereignisprozedur festgelegt werden, um in der laufenden Anwendung z.B. die Kommandozeilen-Parameter der neu gestarteten Instanz auszuwerten und diese ggf. zu beenden:
Delphi-Quellcode:
type
TNewInstProc = procedure(ProcessId: Cardinal; CmdLine: string; var Allow: Boolean);
var
NewInstProc: TNewInstProc;
- Kompakt gehaltene NonVCL-Unit, wenig Overhead
InstanceCheck.pas- Enthält die Komponente TInstanceCheck, über welche sich die Einstellungen für OneInstance bequem über den OI verwalten lassen
- Benötigt weniger Ressourcen als ein Timer
You're welcome
Shaman
[edit=Daniel G] Mfg, Daniel G[/edit]