Поймать TerminateProcess для своего приложения
От: _agg  
Дата: 22.02.19 04:12
Оценка:
привет всем, понадобилось в момент когда из диспетчера задач вызывают снять задачу записать в лог сообщение об этом, пытался вот так:
void __cdecl thr_wait_terminate_process(LPVOID ptr) {
    DWORD dwPID = GetCurrentProcessId();
    HANDLE hProcess = OpenProcess(SYNCHRONIZE | PROCESS_TERMINATE, TRUE, dwPID);
    do {
        if (!hProcess) {
            t2f::T2F(err::GetErrMsg());
            break;
        }
    } while (false);
    DWORD dwErr = WaitForSingleObject(hProcess, INFINITE);
    CString str; str.Format(L"Close process:%lu", dwErr);
    t2f::T2F(str);
}

t2f::T2F — пишет лог
err::GetErrMsg() — вызывает GetLastError и форматирует сообщение из полученной ошибки

Это поточная функция, которая как мне казалось должна поймать TerminateProcess вызываемый для моего процесса диспетчером задач, но увы и поэтому прошу помощи у знающих людей как же правильно это сделать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.