[問題] SetConsoleCtrlHandler無法使用

看板C_and_CPP (C/C++)作者 (肥龜)時間10年前 (2015/11/17 15:18), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenCV 問題(Question): SetConsoleCtrlHandler在整段的程式中沒有效果,我想要使其產生CTRL+BREAK的效果 但其沒有接收到 餵入的資料(Input): NO 預期的正確結果(Expected Output): Console會被關掉 錯誤結果(Wrong Output): Console並未接收到訊號,而無法被關掉 程式碼(Code):(請善用置底文網頁, 記得排版) #include "stdafx.h" #include <string> #include <stdio.h> #include <windows.h> #include <iostream> #include <WinBase.h> wchar_t fileName[] = {L"C:\\Windows\\System32\\cmd.exe"}; wchar_t CmdString[] = {L" /c node test.js"}; wchar_t CmdString1[] = {L"C:\\Windows\\System32\\cmd.exe /c node 0.js"}; wchar_t CmdString2[] = {L"C:\\Windows\\System32\\cmd.exe /c node 2.js"}; private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { BOOL bSuccess; STARTUPINFO StartInfo; PROCESS_INFORMATION ProcInfo; HANDLE hNewProc, hNewThread; DWORD dwProcID, dwThreadID; //Initial STARTUPINFO StartInfo.cb = sizeof(STARTUPINFO); StartInfo.lpReserved = NULL; StartInfo.lpDesktop = NULL; StartInfo.lpTitle = NULL; StartInfo.cbReserved2 = 0; StartInfo.lpReserved2 = NULL; //Initial PROCESS_INFORMATION ProcInfo.hProcess = hNewProc; ProcInfo.hThread = hNewThread; ProcInfo.dwProcessId = dwProcID; ProcInfo.dwThreadId = dwThreadID; bSuccess = CreateProcess( NULL, // name of executable module CmdString1, // command line string NULL, // SD NULL, // SD true, // handle inheritance option CREATE_NEW_PROCESS_GROUP, // creation flags NULL, // new environment block NULL, // current directory name &StartInfo, // startup information &ProcInfo // process information ); SetConsoleCtrlHandler(CTRL_C_EVENT,FALSE); } 補充說明(Supplement): 我主要是要把新跳出來的執行視窗關閉,如果有其他的方法可以關掉的話 請大家救救我 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.192.66 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1447744681.A.E54.html

11/17 15:27, , 1F
ShowWindow(hwnd,SW_HIDE); 隱藏起來,眼不見為淨
11/17 15:27, 1F

11/17 15:47, , 2F
%不行喔,因為要連續開很多個,不關掉的話會記憶體暴增
11/17 15:47, 2F

11/17 16:08, , 3F
CreateProcess => TerminateProcess
11/17 16:08, 3F

11/17 16:09, , 4F
Cmd => taskkill
11/17 16:09, 4F

11/17 16:09, , 5F
SendMessage => exit
11/17 16:09, 5F

11/17 16:09, , 6F
方法很多, 選一個用吧
11/17 16:09, 6F

11/17 16:37, , 7F
TerminateProcess(PROCESS_ALL_ACCESS,1)這樣用法對嗎
11/17 16:37, 7F
文章代碼(AID): #1MIjIfvK (C_and_CPP)
文章代碼(AID): #1MIjIfvK (C_and_CPP)