AGB  ·  Datenschutz  ·  Impressum  







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

Programm nur 1x starten

Ein Thema von schitho · begonnen am 14. Dez 2002 · letzter Beitrag vom 15. Dez 2002
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von schitho
schitho

Registriert seit: 14. Dez 2002
Ort: Wien
47 Beiträge
 
Delphi 7 Professional
 
#1

Programm nur 1x starten

  Alt 14. Dez 2002, 22:13
Hi,

hab noch eine Frage:

Wie kann ich verhindern, dass mein Delphi-Programm mehrmals gestartet wird?

Beispiel:

Das Programm DelphiProg wir kurz hintereinander mehrmals gestartet, dabei werden unterschiedliche Parameter übergeben:

DelphiProg c:\temp\test1.txt
DelphiProg c:\temp\test2.txt
DelphiProg c:\temp\test3.txt

Wie kann ich nun verhindern, das DelphiProg mehrmals gestartet wird. Und: Wie leite ich die anderen Parameter (c:\temp\test2.txt, c:\temp\test3.txt) auf das zuerst gestartete Programm um?

Gibt es da überhaupt eine Lösung???

lg
Thomas
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#2
  Alt 14. Dez 2002, 22:16
Hallöchen,

verhindern das Dein Programm nur einmal gestartet wird, kannst Du zum Bleistift hiermit:

Delphi-Quellcode:
var
  mHandle: THandle;

implementation
{$R *.dfm}

//Code, Code, Code...
//Prozeduren, Funktionen...

Initialization //Verhindern, dass das Programm mehrmals gestartet wird
   mHandle := CreateMutex(nil, True, 'NameDerExe');
     if GetLastError = ERROR_ALREADY_EXISTS then
     begin
       Halt;
end;
finalization
   if mHandle <> 0 then
     CloseHandle(mHandle);
end. //Programmende
Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von schitho
schitho

Registriert seit: 14. Dez 2002
Ort: Wien
47 Beiträge
 
Delphi 7 Professional
 
#3
  Alt 14. Dez 2002, 22:30
Hallo Daniel,

danke für die prompte Antwort.

Gibt es auch eine Möglichkeit die Parameter umzuleiten auf das bereits laufende Programm?

lg
Thomas
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#4
  Alt 14. Dez 2002, 22:33
Hallo Thomas,

ich verstehe Dein Problem nicht so richtig. Man kann doch mehrere Parameter "gleichzeitig" übergeben, also alle drei Dateien gleichzeitig. Das ist doch das was Du willst, oder?

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von schitho
schitho

Registriert seit: 14. Dez 2002
Ort: Wien
47 Beiträge
 
Delphi 7 Professional
 
#5
  Alt 14. Dez 2002, 22:44
Hallo Daniel

Zitat:
Man kann doch mehrere Parameter "gleichzeitig" übergeben, also alle drei Dateien gleichzeitig.
Stimmt. Aber wenn ich das Programm über das Kontextmenü im Explorer aufrufe, wird leider bei Mehrfachmarkierungen das Programm mehrmals gestartet und jedesmal der Dateiname als Parameter angegeben. Was natürlich schwachsinn ist. Daher möchte ich die Parameter abfangen und an das erste laufende Programm übergeben.

Oder kann man in der Registry statt %1 einen anderen Platzhalter verwenden, der die Dateinamen als mehrere Parameter dem Programm übergibt, anstatt es mehrmals zu starten??

lg
Thomas
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#6
  Alt 14. Dez 2002, 22:49
Diese Komponente kann neben dem blockieren von Mehrfachstarts, auch die Parameter an die 1. Instanz weiterleiten.
  Mit Zitat antworten Zitat
Benutzerbild von schitho
schitho

Registriert seit: 14. Dez 2002
Ort: Wien
47 Beiträge
 
Delphi 7 Professional
 
#7
  Alt 14. Dez 2002, 23:05
Der Link funktioniert bei mir nicht.

Thomas
  Mit Zitat antworten Zitat
Daniel B
(Gast)

n/a Beiträge
 
#8
  Alt 14. Dez 2002, 23:27
Aber bei mir. Hab es mal angehängt!

Grüsse, Daniel
  Mit Zitat antworten Zitat
Benutzerbild von schitho
schitho

Registriert seit: 14. Dez 2002
Ort: Wien
47 Beiträge
 
Delphi 7 Professional
 
#9
  Alt 14. Dez 2002, 23:32
Hab selbst einen anderen Link gefunden:

http://www.blueorbsoft.com/CodeTips/OneInstance.zip

Die Parameter werden aber auch damit nicht übergeben. Allerdings glaub ich zwischenzeitlich, dass ich das Problem entweder nur über Windows (Registry) oder über eine Datei lösen kann, in der ich einfach die Parameter hineinschreibe und vom laufenden Programm lesen lasse.

lg
Thomas
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#10
  Alt 15. Dez 2002, 02:17
Moin Zusammen,

für das Problem mit der einen Instanz hätten wir auch hier im Forum Lösungen:

Einmal allgemein in der Code Library:
Library: Windows-API: Doppelstart verhindern

und als etwas ausführlichere Diskussion hier:
Windows-API: Erkennen, falls Programm bereits aktiv
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:43 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