Einzelnen Beitrag anzeigen

Benutzerbild von Shaman
Shaman

Registriert seit: 2. Nov 2003
Ort: Schweiz
407 Beiträge
 
Turbo Delphi für Win32
 
#1

Weitere Programm-Instanzen verhindern mit Parameterübergabe

  Alt 19. Jul 2006, 22:10
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]
Angehängte Dateien
Dateityp: zip oneinstance_157.zip (3,7 KB, 475x aufgerufen)
Daniel Pauli
Looking for answers from the great beyond
  Mit Zitat antworten Zitat