Wstrzykuję bibliotekę DLL do jakiegoś procesu, biblioteka DLL ma wątek roboczy, który uruchamia pętlę komunikatów.Jak poprawnie zakończyć wątek roboczy w wstrzykniętej bibliotece DLL?
Chciałbym zakończyć wątek poprawnie, tj. Wysłać wiadomość o zakończeniu (PostThreadMessage) i czekać na nią (WaitForSingleObject).
Gdzie mogę czekać na zamknięcie tego wątku? Nie mogę tego zrobić na DLL_PROCESS_DETACH, ponieważ do tego czasu wszystkie wątki są zamknięte lub zakończone i nie wiem, kiedy proces ma się zamknąć.
Moja jedyna myśl to: Czy istnieje sposób na przechwycenie pętli wiadomości głównego wątku i poszukiwanie wiadomości WM_CLOSE \ DESTROY?
Chciałbym usłyszeć wszelkie inne pomysły \ rozwiązania.
Edit:
Próbował zaczepić główny wątek korzystając SetWindowsHookEx z WH_CALLWNDPROC ale to nie działało całkiem dobrze, udało mi się zaczepić i odbierać wiadomości w wątku. Jednak nie otrzymałem wiadomości WM_QUIT tylko WM_DESTROY i WM_NCDESTROY, a wszystkie one były powiązane z oknami.
Dzięki
Omer
Dzięki, próbując tego, brzmi jak dokładnie to, czego szukałem :) – Omer
To nie działało całkiem dobrze, udaje mi się przechwycić i odebrać wiadomości wątku. Jednak nie otrzymuję wiadomości WM_QUIT tylko WM_DESTROY i WM_NCDESTROY i wszystkie są powiązane z oknami. – Omer
Aby zdawać sobie sprawę z WM_QUIT, WH_CALLWNDPROC jest niewłaściwym rodzajem haka do użycia (ponieważ procedura okna nie będzie wywoływana za pomocą WM_QUIT). Musisz użyć haczyka WH_GETMESSAGE, aby zdawać sobie sprawę z WM_QUIT. –