AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Doppelstart verhindern

Ein Thema von Luckie · begonnen am 11. Jun 2002 · letzter Beitrag vom 25. Sep 2004
Antwort Antwort
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Doppelstart verhindern

  Alt 11. Jun 2002, 15:58
Wie kann ich verhindern, daß mein Programm 2 mal (zur gleichen Zeit) gestartet wird ??

Unter 32Bit-Windows bedient man sich eines Mutex. Binde folgende Unit ein, du musst sie einfach nur deinem Projekt hinzufügen:
Delphi-Quellcode:
unit NichtDoppeltStarten;

interface

implementation

uses windows,Dialogs,sysutils;

var mHandle: THandle; // Mutexhandle

Initialization
  mHandle := CreateMutex(nil,True,'xxxxx');
  // 'xxxxx' Der Anwendungsname ist hier einzutragen
  if GetLastError = ERROR_ALREADY_EXISTS then begin
    // Anwendung läuft bereits
    {showMessage('Anwendung läuft bereits!!!!!');}   
    // Wenn du deine Meldung willst, mach die Klammern weg
    Halt;
  end;

finalization // ... und Schluß
  if mHandle <> 0 then
    CloseHandle(mHandle)
end. {Dieter Hirt}
Um die Lösung nicht nur für den aktuell angemeldeten Benutzer greifen zu lassen (eine Programminstanz pro User), sonder für das ganze System (eine Programminstanz pro Rechner), bedarf es nur dem string 'Global\' als Präfix für den Mutexnamen.

[edit=Matze][code] durch [delphi]-Tags ersetzt. Mfg, Matze[/edit]
[edit=Dax]reformat. Mfg, Dax[/edit]
[edit=Dax]'Global\'-Tipp hinzugefügt. Mfg, Dax[/edit]
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Doppelstart verhindern

  Alt 25. Sep 2004, 13:38
Unser Forenuser Shaman hat für diese Funktion eine kleine Komponente geschrieben. Sie ist diesem Beitrag angehängt.
Zitat von Shaman:
Wenn man nicht will, dass die Anwendung mehrmals gestartet werden kann, ist das ziemlich mühsam zu implementieren. Hier eine Komponente von mir, die man nur auf die Hauptform zu platzieren hat, um sich nicht mehr um das Thema kümmern zu müssen. Sie verhindert den Start einer zweiten Instanz und übergibt Kommandozeilen-Parameter und Fokus der ersten.
Oder man nimmt die Unit von NicoDE.

[edit=Luckie]Nicos's Unit angehängt. Mfg, Luckie[/edit]
Angehängte Dateien
Dateityp: zip oneinstance_604.zip (3,6 KB, 557x aufgerufen)
Dateityp: zip oneinst_149.zip (134,2 KB, 533x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz