[ Raol Duke @ 08.11.2005. 20:59 ] @

Dali postoji neka opcija u Delphi-ju da spirijeci pokretanje dve instance jedne aplikacije, odnosno da pri pokretanju drugi put prikaze prvu instancu.
Znate vec na sta misilm.

[ Nemanja Avramović @ 08.11.2005. 21:48 ] @
mozes pri pokretanju aplikacije sa FindWindow da trazis naslov tvog prozora i ako dobijes neki handle (razlicit od 0) onda da izbacis poruku/ugasis svoju aplikaciju, mada je meni lakse da bacim ovo na formu...
[ Trodmi @ 08.11.2005. 21:57 ] @
Evo probaj sa ovim unitom, imas i full source code a koristis je sa:


program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
CheckPrevious in 'CheckPrevious.pas';

{$R *.res}

begin
//samo jedna instanca programa je dozvoljena
if not CheckPrevious.RestoreIfRunning(Application.Handle, 1) then
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.
[ Brkic @ 08.11.2005. 23:01 ] @

Mutexima, ubaci ovo u Form.Create glavne forme

var
fMutex : THandle;

begin
try
{ create our mutex }
fMutex := CreateMutex(nil,
FALSE,
@Application.Title[1]);

{ test mutex to see if we need to terminate or not }
if ( GetLastError() = ERROR_ALREADY_EXISTS ) or
( WaitForSingleObject(fMutex,100) = WAIT_TIMEOUT ) or
( fMutex = 0 ) then
begin
{ terminate our application }
Application.Terminate;
end;

finally
{ free our created mutex }
ReleaseMutex(fMutex);
end;
[ Taranto @ 17.01.2006. 12:09 ] @
Resenje je prosto.
Iskoristi projektni obrazac SINGLETON. (mala mudrolija sa konstruktorom)

Pozdrav...
S.
[ bondja @ 17.01.2006. 14:33 ] @
@Taranto
mudrolija sa konstruktorom -?!? NIJE U PITANJU INSTANCA KLASE U PROGRAMU, VEC MAIN FORMA! ... I GDE JE PRIMER KODA AKO JE U PITANJU "mala mudrolija" ?!?

[ nikola.j @ 17.01.2006. 16:01 ] @
>

Nije li MainForma instanca klase TMainForma?

Ko nece da se zeza sa singleton-ima, neka potrazi unit oneinstance.pas od Igora
Savkica.
[ Passwd @ 17.01.2006. 19:32 ] @
Lol, sta komplicirate stvar kad je ovo najzesce rjesenje..

Citat:
JaHvram: mozes pri pokretanju aplikacije sa FindWindow da trazis naslov tvog prozora i ako dobijes neki handle (razlicit od 0) onda da izbacis poruku/ugasis svoju aplikaciju


U OnCreate forme stavis samo nesto ovako..
Code:

hnd:THandle;

begin
//...
hnd:=FindWindow(nil,'NazivMogPrograma');
if hnd<>0 then Application.Terminate;

....

[ Dejan Mitrovic @ 02.02.2006. 18:12 ] @
Citat:
Passwd: Lol, sta komplicirate stvar kad je ovo najzesce rjesenje..



U OnCreate forme stavis samo nesto ovako..
Code:

hnd:THandle;

begin
//...
hnd:=FindWindow(nil,'NazivMogPrograma');
if hnd<>0 then Application.Terminate;

....



+ code editor za glavnu formu (onaj u kom se nalazi TMainForma) mora biti zatvoren (sto ce zatvoriti i samu formu) u toku pokretanja programa inace ce hnd <> 0 i ako je prva instanca