Autor Beitrag
alias5000
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: Sa 04.02.06 19:10 
Hi
ich hab das GEfühl, dass es das hier schon irgendwie geben muss, aber ich hab noch nix gefunden.
Es geht darum, dass weil ich hier ( www.entwickler-ecke....55173&highlight= )
keine Antwort bekommen hab, hab ich mich jetzt entschlossen, das Programm gleich neu zu starten.
Aber wie kann ich mein Programm so neu starten, dass nie zwei Instanzen des Programms gleichzeitig offen sind? D.h. zuerst soll das alte komplett geschlossen sein und danach soll es wieder neu geöffnet werden.

Gruß alias5000



Moderiert von user profile iconChristian S.: SID aus URL entfernt

_________________
Programmers never die, they just GOSUB without RETURN
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 05.02.06 11:28 
Hallo

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
Unit TEST;

interface

implementation

uses windows,Dialogs,sysutils;

var mHandle: THandle;    // Mutexhandle

Initialization
  mHandle := CreateMutex(nil,True,'HIER STEHT DER NAME DEINER ANWENDUNG');
  if GetLastError = ERROR_ALREADY_EXISTS then begin
    // Anwendung läuft bereits
    showMessage('Das Programm ???????? wurde bereits gestartet. Ein mehrfacher Start ist nicht möglich.');   
    Halt;
  end;

finalization   // ... und Schluß
  if mHandle <> 0 then
    CloseHandle(mHandle)
end.


Ich hoffe, das hilft Dir weiter


Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
alias5000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: So 05.02.06 11:31 
danke, aber eigentlich meinte ich etwas anderes:
Es geht weniger darum, zu verhindern, dass die Anwendung zweimal gestartet werden kann (das hab ich schon drinnen),
sondern ich will meine Anwendung neu starten
und halt so, dass die neue Instanz nicht während der Laufzeit der alten Instanz gestartet wird, sondern erst dann, wenn die alte Instanz komplett geschlossen wurde.
Ich hatte in dem Zusammenhang glaub ich mal was über .bat Dateien gehört, hab aber keine Erinnerung mehr dran, wie das genau lief.

_________________
Programmers never die, they just GOSUB without RETURN
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 05.02.06 11:37 
Hallo,

da fält mir auch nicht viel dazu ein. Du könnest ein 2. Programm machen und von dem aus Dein 1. Programm starten. Wird es vollständig durch den Benutzer gelöscht, startest Du es ein 2. Mal. Du kannst über die o.g. Prozedur prüfen, ob es noch läuft und so verhindern, dass es noch während der Laufzeit des 1. Starts erneut gestartet wird. Liefert die o.g. Prozedur das vollständige Ende des 1. Startes, startet es ein 2. Mal.


Vielleicht hilft Dir das.


Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!
alias5000 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 2145

WinXP Prof SP2, Ubuntu 9.04
C/C++(Code::Blocks, VS.NET),A51(Keil),Object Pascal(D2005PE, Turbo Delphi Explorer) C# (VS 2008 Express)
BeitragVerfasst: So 05.02.06 11:46 
Mir fällt grad was anderes ein :D
muss ich mal versuchen, und zwar:

Ich starte meine neue Instanz doch, der dann auch ein Parameter übergeben wird, kurz bevor die alte geschlossen wird.
In der .dpr-Datei wird dann die neue Instanz beim erstellen angehalten, wenn der Parameter vorkommt, bis die alte geschlossen wurde (einfach ne Schleife mit application.ProcessMessages machen).
Erst wenn die alte nimmer existiert, wird die MainForm erzeugt.
Vllcht ist dann ein Anhalten auch nicht nötig, da sich die alte Instanz schneller schließt...

_________________
Programmers never die, they just GOSUB without RETURN
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 05.02.06 11:53 
Hallo


ausprobieren !!! :D


Gruss


Markus

_________________
Das Leben besteht aus Bits und Bytes - nur: wo laufen sie denn ????
Super ... Du kannst das zwar lesen, toll..... aber: völlig zwecklos !!!