通过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);
}