作者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/cn.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