Коллеги, подскажите плз: Сделал програму, который используя через определенные промежутки времени (1с), проверяет наличие новых аппликаций(процессов). В качестве таймера использовал мультимедийный таймер. Останавливаю таймер, удаляю класс обертку мультимедийного таймера, выгружаю динамические библиотеки FreeLibrary, которыe использовал в программе, удаляю главное окно PostQuitMessage(0). Итог: главное окно исчезает с экрана, но процесс в TaskManagere остается. Что делать ? Самое интересное, при инсталляции в нашей сети указанный баг встречается на 1/3 компьютеров, на других все работает тип-топ.
Отказался от CRT, используешь ret или ExitThread для выхода? В этом случае на момент выхода из основного треда существуют другие потоки. Мультимедийный таймер может использовать дополнительный высокоприоритетный поток, а также всякая посторонняя гречиха (в т.ч. совершенно легитимная) может создавать паразитные треды. Соответственно решение – использовать ExitProcess().
Код (Text): xor esp,esp hlt Для тех кто не согласен(кто в танке, а не согласны многие) сразу отписываю: Юзается NtTerminatePricess, что аналогично вызванному непосредственно потоком.
Всем спасибо! П №2 оказался верен. На компьютерах отдельных пользователей стоит тулза для удаленного администрирования (подглядывания ), эта хрень написана-работает криво, вот она и создавала проблемы.