向CMD窗口发送CTRL+C

通过WNDOWS CMD运行某些程序时,需要按CTRL+C终止。编程时则需要自动发送CTRL+C到指定窗口,以下代码经实测可用。

注:假设PID为CMD运行窗口的进程ID。

{
		AttachConsole(PID); // attach to process console
		SetConsoleCtrlHandler(NULL, TRUE); // disable Control+C handling for our app
		GenerateConsoleCtrlEvent(CTRL_C_EVENT, 0); // generate Control+C event

		HANDLE hProcess = OpenProcess(PROCESS_TERMINATE, FALSE, PID);
		if (INVALID_HANDLE_VALUE == hProcess)
		{
			return ;
		}
		WaitForSingleObject(hProcess, INFINITE);
		CloseHandle(hProcess);
		Sleep(2000); //等待2秒,以防止自身被关闭。

		FreeConsole();
		SetConsoleCtrlHandler(NULL, FALSE);
}


你可能感兴趣的:(C++)