作者e1090128 (肥龜)
看板C_and_CPP
標題[問題] TerminateProcess執行結果有問題
時間Sun Nov 22 00:30:08 2015
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
無
問題(Question):
程式的目的為開啟一個CMD的程式,並且把其關閉,但使用TerminateProcess後
卻無反應,請問這是正確的執行結果嗎
餵入的資料(Input):
無
預期的正確結果(Expected Output):
本程式為使空拍機起飛並關閉其控制視窗
錯誤結果(Wrong Output):
程式無反應,空拍機也飛不起來
程式碼(Code):(請善用置底文網頁, 記得排版)
#include "stdafx.h"
#include <string>
#include <stdio.h>
#include <windows.h>
#include <iostream>
#include <WinBase.h>
wchar_t CmdString1[] = {L"C:\\Windows\\System32\\cmd.exe /c node 0.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_CONSOLE,//CREATE_NEW_PROCESS_GROUP, // creation flags
NULL, // new environment block
NULL, // current directory name
&StartInfo, // startup information
&ProcInfo // process information
);
TerminateProcess(ProcInfo.hProcess,0);
}
補充說明(Supplement):
另外請問TerminateProcess這樣的用法正不正確
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.117.192.66
※ 文章網址: https://webptt.com/m.aspx?n=bbs/C_and_CPP/M.1448123411.A.A47.html
1F:→ TobyH4cker: 天...你Terminate建好的process啦 11/23 05:59
2F:→ TobyH4cker: 要隱藏CMD畫面?要嘛直接傳node 0.js要嘛改SW_參數 11/23 06:01
3F:→ TobyH4cker: 在STARTUPINFO裡 MSDN上去查 11/23 06:04
4F:推 stupid0319: 個人認為TerminateProcess是成功的,原PO請安心 11/23 06:57
5F:→ stupid0319: 只是還沒執行完就被強制關掉 11/23 06:58
6F:→ stupid0319: CreateProcess後下一行馬上TerminateProcess 11/23 07:02
7F:→ stupid0319: 新建的程緒大概執行了0.0001秒 11/23 07:03
8F:→ Clangpp: 你沒有用WaitSingleObject?? 11/23 11:12
9F:→ e1090128: 請問用Sleep也可以嗎? 11/24 20:48
10F:→ e1090128: 我有用WaitForSingleObject停止兩秒,但卻打開後關不掉 11/24 21:15