[ 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. |
[ Raol Duke @ 08.11.2005. 20:59 ] @
[ 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 Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|