Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

Zakończenie jednego programu z poziomu innego

Ostatnio zmodyfikowano 2009-08-07 21:44
Autor Wiadomość
Bombasarkadian
Temat założony przez niniejszego użytkownika
Zakończenie jednego programu z poziomu innego
» 2009-08-07 19:02:00
Witam,
Mój problem prezentuje się następująco. Gdy chcę zrobić to co w temacie robię tak:
C/C++
hProgram = FindWindow( "NazwaKlasy", NULL );
SendMessage( hProgram, WM_DESTROY, 0, 0 );
Oczywiście wszystko działa, ale problem pojawia się gdy chcę zamknąć w ten sposób program, którego kod przedstawia się następująco:
http://wklej.org/hash/07f235529f/
W pełnej wersji on po drodze wykonuje kilka operacji, ale generalnie ma działać w nieskończoność.

Normalnie mam jakiś przestój w myśleniu i nie jestem w stanie wyłączyć tego programu z poziomu innej aplikacji :(

Mógłby ktoś być tak dobry i wyjaśnić jak mam się do tego zabrać?
P-9201
DejaVu
» 2009-08-07 19:32:51
Innymi słowy chcesz ubić konsolę z innego programu. Próbowałeś wysłać komunikat WM_QUIT?

/edit:
Tu coś też masz napisane na temat komunikatów, wykorzystywanych przy zamykaniu aplikacji:
http://www.gamedev.net/community/forums/topic.asp?topic_id=135109
P-9203
Bombasarkadian
Temat założony przez niniejszego użytkownika
» 2009-08-07 21:18:27
WM_QUIT - Próbowałem zrobić, ale mam while(true) i ten program nie sprawdza tego komunikatu :(

To może inaczej:
Czy da radę tak wstawić tego while w ten kod http://wklej.org/hash/0a5e6ec1ad/ (jeśli tak to gdzie i jak), żeby można było wyjść z programu poprzez
SendMessage( hWnd, WM_DESTROY, 0, 0 );
 wysłane z innego programu? (W sensie, żeby podczas wykonywania tego while program sprawdzał komunikaty)
P-9213
Bombasarkadian
Temat założony przez niniejszego użytkownika
» 2009-08-08 08:27:04
Wybacz, przegapiłem twoją odpowiedź.
Zrobiłem Terminateprocess(); i wszystko działa jak należy :D

Dzięki za pomoc
P-9223
manfred
» 2009-08-07 19:39:57
Program jest konsolowy, to co może zrobić z WM_QUIT? Zachowa go w kolejce komunikatów na pamiątkę...
Well, bądź chamski. Utwórz drugiemu programowi wątek (CreateRemoteThread), którego procedurą będzie ol' good ExitProcess. Jeśli nie chcesz się w to bawić, to bądź jeszcze bardziej chamski i bezczelnie wywołaj TerminateProcess na procesie, który chcesz ubić.
P-19158
manfred
» 2009-08-07 21:44:37
A może przeczytaj mojego posta, zamiast kombinować z jakimiś bzdurami?
P-19159
« 1 »
  Strona 1 z 1