Ĺadny brzuch
Tak jak w temacie: chcę, żeby w programie była możliwość zrestartowania go, czyli całkowitego zamknięcia i uruchomienia ponownie. pewnie da się to zrobić, bo programy tak mają, ale nie wiem jak.
Nie bijcie, jak już było...
Nie bijemy bo nie dosiegniemy ;). Bylo, poszukaj. Pytalem o to kilka lat temu ;).
Tak jak w temacie: chcę, żeby w programie była możliwość zrestartowania go, czyli całkowitego zamknięcia i uruchomienia ponownie. pewnie da się to zrobić, bo programy tak mają, ale nie wiem jak.
Nie bijcie, jak już było... Zamykasz swoj program i wywolujesz instrukcje odpalajaca nastepny egzemplarz.
W miejscu gdzie wykonujesz ostatnie linijke programu dajeszshellexecute(0, 'open', PChar(sciezka_do_pliku_exe_programu), null, null, SW_SHOWNORMAL);i wystarczy - ja tak robie i dziala. Musi dzialac. ;)
WinExec(GetCommandLine(),SW_SHOW);
Użytkownik Cyrkiel edytował ten post 22 sierpień 2006, 20:49
Zamykasz swoj program i wywolujesz instrukcje odpalajaca nastepny egzemplarz.
W sumie niby tak... Pewnie bym na to sam wpadł, gdyby nie jeden szczegół:
ja chcę zamknąć program, a potem go uruchomić. To rozwiązanie uruchamia ponownie program, a potem go zamyka. Jeszcze nie myślałem nad tym, czy takie rozwiązanie mi wystarczy, być może będzie dobre. Pytanie jednak dotyczy tego, co opisałem, czyli zamknięcia i otwarcia.
Ktoś wie?
Spróbuj - program zamyka się, czeka 5 sekund i odpala jeszcze raz ;)char tmp[256], tmp2[256]; GetTempPath(256,tmp); strcpy(tmp+strlen(tmp),"plik.bat"); strcpy(tmp2,tmp); FILE* f = fopen(tmp,"w"); strcpy(tmp,"ping 127.0.0.1 -n 5\r\n"); strcpy(tmp+strlen(tmp),GetCommandLine()); strcpy(tmp+strlen(tmp),"\r\ndel %0\r\n"); fwrite(tmp,strlen(tmp),1,f); fclose(f); WinExec(tmp2,SW_HIDE); TerminateProcess(GetCurrentProcess(),0);
Tak na prawdę, to liczyłem, że jest jakaś magiczna funkcja systemu operacyjnego, która robi takie rzeczy. W sumie mam teraz zaproponowane dwa rozwiązania:
-otworzyć program jako drugą kopię, a pierwszą zamknąć, lub
-użyć do tego celu pliku wsadowego.
Ostatecznie zdecydowałem się na pierwsze rozwiązanie, bo jest prostsze i zupełnie wystarczające.
Mam nadal wrażenie, że jest taka funkcja systemu, tylko ja jej nie znalazłem, więc gdyby ktoś wiedział coś konkretnego, to nadal czekam na info, najlepiej na maila, bo temat wypadałoby już zamknąć.
zanotowane.pl doc.pisz.pl pdf.pisz.pl zsf.htw.pl
Nie bijcie, jak już było...
Nie bijemy bo nie dosiegniemy ;). Bylo, poszukaj. Pytalem o to kilka lat temu ;).
Tak jak w temacie: chcę, żeby w programie była możliwość zrestartowania go, czyli całkowitego zamknięcia i uruchomienia ponownie. pewnie da się to zrobić, bo programy tak mają, ale nie wiem jak.
Nie bijcie, jak już było... Zamykasz swoj program i wywolujesz instrukcje odpalajaca nastepny egzemplarz.
W miejscu gdzie wykonujesz ostatnie linijke programu dajeszshellexecute(0, 'open', PChar(sciezka_do_pliku_exe_programu), null, null, SW_SHOWNORMAL);i wystarczy - ja tak robie i dziala. Musi dzialac. ;)
WinExec(GetCommandLine(),SW_SHOW);
Użytkownik Cyrkiel edytował ten post 22 sierpień 2006, 20:49
Zamykasz swoj program i wywolujesz instrukcje odpalajaca nastepny egzemplarz.
W sumie niby tak... Pewnie bym na to sam wpadł, gdyby nie jeden szczegół:
ja chcę zamknąć program, a potem go uruchomić. To rozwiązanie uruchamia ponownie program, a potem go zamyka. Jeszcze nie myślałem nad tym, czy takie rozwiązanie mi wystarczy, być może będzie dobre. Pytanie jednak dotyczy tego, co opisałem, czyli zamknięcia i otwarcia.
Ktoś wie?
Spróbuj - program zamyka się, czeka 5 sekund i odpala jeszcze raz ;)char tmp[256], tmp2[256]; GetTempPath(256,tmp); strcpy(tmp+strlen(tmp),"plik.bat"); strcpy(tmp2,tmp); FILE* f = fopen(tmp,"w"); strcpy(tmp,"ping 127.0.0.1 -n 5\r\n"); strcpy(tmp+strlen(tmp),GetCommandLine()); strcpy(tmp+strlen(tmp),"\r\ndel %0\r\n"); fwrite(tmp,strlen(tmp),1,f); fclose(f); WinExec(tmp2,SW_HIDE); TerminateProcess(GetCurrentProcess(),0);
Tak na prawdę, to liczyłem, że jest jakaś magiczna funkcja systemu operacyjnego, która robi takie rzeczy. W sumie mam teraz zaproponowane dwa rozwiązania:
-otworzyć program jako drugą kopię, a pierwszą zamknąć, lub
-użyć do tego celu pliku wsadowego.
Ostatecznie zdecydowałem się na pierwsze rozwiązanie, bo jest prostsze i zupełnie wystarczające.
Mam nadal wrażenie, że jest taka funkcja systemu, tylko ja jej nie znalazłem, więc gdyby ktoś wiedział coś konkretnego, to nadal czekam na info, najlepiej na maila, bo temat wypadałoby już zamknąć.