Ĺadny brzuch
Witam Wszystkich
Mam taki oto kod (w .DPRce):
// ... uses {...} Windows; var Ex : Integer; hM : HDC; begin // ... hM:=CreateFileMapping(THANDLE($FFFFFFFF),nil, PAGE_READONLY,0,32,'ApplicationTestMap'); if GetLastError=ERROR_ALREADY_EXISTS then begin MessageBox(Application.Handle, 'Program jest już uruchomiony !!!', 'OpenProgs', MB_ICONWARNING); Application.Terminate; CloseHandle(hM); end; // ... end.
Dzięki niemu, nie mozliwe staje sie ponowne otwarcie aplikacji.
Ale co, jesli ten sam kod wrzuce do drugiego, innego programu oraz go odpale?
- Nie mozliwe staje sie uruchomienie tego drugiego programu...
W jaki sposob mozna 'uleczyc' tego buga?
DJ ProG
hmm... ciekawe... Sprobuj tego
Wystarczy zmień ApplicationTestMap na coś innego w drugim programie ;)
Poprzedni temat http://forum.ks-eksp...showtopic=39800
if WaitForSingleObject(CreateMutex(nil,false,'Nasz programik'),100)=0 then begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end else {messagebox...}
Użytkownik Cyrkiel edytował ten post 24 maj 2005, 17:07
DJ Scratcher (twórca tamtego tematu), to ja - aktualnie mam nowy, wg. mnie lepszy. Ale sentyment zostaje i szkoda mi skasować tamtego profilu.
Kiedys sprawdzilem, Twoj kod, Cyrkiel, ale mi nie poszedl. Dzis sprawdze drugi raz...
Pozdrawiam, DJ ProG
(...) Kiedys sprawdzilem, Twoj kod, Cyrkiel, ale mi nie poszedl. Dzis sprawdze drugi raz...
Pozdrawiam, DJ ProG
Heh, nie wiedziałem :P I nadal mi to działa bez zarzutu - wyciągnąłem to debuggerem [ollydbg rlz] z jakiejś gry ;)
A jednak wtedy zle wpisalem Twoj kod, Cyrkiel... Poprostu nie dostawilem 'else'... Tylko sie nie smiej - gdy uzywalem tamtego kodu, bylem 'troche' mniej kumaty niz teraz...
Aha i zmiana ApplicationTestMap na cos innego byla dobrym pomyslem. Wielkie thx.
Wiec w skrocie: dzieki wszystkim i juz mozna zamknac toppic, bo kodziki (ktore chodza ;P ) sa powyzej!
Pozdrawiam, DJ ProG
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Mam taki oto kod (w .DPRce):
// ... uses {...} Windows; var Ex : Integer; hM : HDC; begin // ... hM:=CreateFileMapping(THANDLE($FFFFFFFF),nil, PAGE_READONLY,0,32,'ApplicationTestMap'); if GetLastError=ERROR_ALREADY_EXISTS then begin MessageBox(Application.Handle, 'Program jest już uruchomiony !!!', 'OpenProgs', MB_ICONWARNING); Application.Terminate; CloseHandle(hM); end; // ... end.
Dzięki niemu, nie mozliwe staje sie ponowne otwarcie aplikacji.
Ale co, jesli ten sam kod wrzuce do drugiego, innego programu oraz go odpale?
- Nie mozliwe staje sie uruchomienie tego drugiego programu...
W jaki sposob mozna 'uleczyc' tego buga?
DJ ProG
hmm... ciekawe... Sprobuj tego
Wystarczy zmień ApplicationTestMap na coś innego w drugim programie ;)
Poprzedni temat http://forum.ks-eksp...showtopic=39800
if WaitForSingleObject(CreateMutex(nil,false,'Nasz programik'),100)=0 then begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end else {messagebox...}
Użytkownik Cyrkiel edytował ten post 24 maj 2005, 17:07
DJ Scratcher (twórca tamtego tematu), to ja - aktualnie mam nowy, wg. mnie lepszy. Ale sentyment zostaje i szkoda mi skasować tamtego profilu.
Kiedys sprawdzilem, Twoj kod, Cyrkiel, ale mi nie poszedl. Dzis sprawdze drugi raz...
Pozdrawiam, DJ ProG
(...) Kiedys sprawdzilem, Twoj kod, Cyrkiel, ale mi nie poszedl. Dzis sprawdze drugi raz...
Pozdrawiam, DJ ProG
Heh, nie wiedziałem :P I nadal mi to działa bez zarzutu - wyciągnąłem to debuggerem [ollydbg rlz] z jakiejś gry ;)
A jednak wtedy zle wpisalem Twoj kod, Cyrkiel... Poprostu nie dostawilem 'else'... Tylko sie nie smiej - gdy uzywalem tamtego kodu, bylem 'troche' mniej kumaty niz teraz...
Aha i zmiana ApplicationTestMap na cos innego byla dobrym pomyslem. Wielkie thx.
Wiec w skrocie: dzieki wszystkim i juz mozna zamknac toppic, bo kodziki (ktore chodza ;P ) sa powyzej!
Pozdrawiam, DJ ProG