Ternick
@Ternick

Как это должно работать?

Искал примеры не убиваемого процесса и то как делают это антивирусы и не только.
Нарыл такой код:
#include <windows.h>
#include <windowsX.h>

using namespace std;

void WndProc_OnDestroy(HWND hWnd)
{
	STARTUPINFO si;
	PROCESS_INFORMATION pi;

	// Создадим другой процесс, а этот благополучно завершим.
	memset(&si, 0, sizeof(STARTUPINFO));
	si.cb = sizeof(STARTUPINFO);
	CreateProcessA(NULL, (LPSTR)"testH.exe", NULL, NULL, FALSE, NORMAL_PRIORITY_CLASS, NULL, NULL, &si, &pi);
	CloseHandle(pi.hThread);
	CloseHandle(pi.hProcess);
	PostQuitMessage(0);
	//return FORWARD_WM_DESTROY(hWnd, DefWindowProc);
}

LRESULT WINAPI WndProc(HWND hWnd, UINT msg,	WPARAM wParam, LPARAM lParam)
{
	switch (msg)
	{
		//HANDLE_MSG(hWnd, WM_CREATE, WndProc_OnCreate);
		HANDLE_MSG(hWnd, WM_DESTROY, WndProc_OnDestroy);
		//HANDLE_MSG(hWnd, WM_SIZE, WndProc_OnSize);
		//HANDLE_MSG(hWnd, WM_COMMAND, WndProc_OnCommand);
	default:
		return DefWindowProc(hWnd, msg, wParam, lParam);
	}
}

Функция WndProc должна вызываться наверно через SetWindowsHookExA или оно должно как то по другому работать ?
На данный момент я сделал точку входа WndProc и оно выполняет свою проверку (как мне бы хотелось верить) и закрывается, но я думаю в данном состоянии оно полностью не рабочее потому что функция не получает нужные ей аргументы.
  • Вопрос задан
  • 104 просмотра
Пригласить эксперта
Ответы на вопрос 1
@Mercury13
Программист на «си с крестами» и не только
Нет, ищите Hello World на WinAPI. Поскольку WinMain() там стандартный и немаленький, его опустили.

Основано это на поведении Windows: она всегда пытается закрыть прогу корректно. Хорошо, закроем корректно, зато вот тебе вторая.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы