m沉默

不放弃,不抛弃

解决system()函数执行命令弹出dos窗口问题

问题描述:使用system()函数执行命令"net start nginx",启动一个windows服务,会弹出一个dos窗口。同时,启动服务的过程比较久,因此不能单纯的采用WinExec()等方式调用,因为WinExec()调用方式是即调用即返回,还没等命令执行完成就结束了。

       因此,这里采用的是ShellExecute加上同步的方式。

解决思路:采用ShellExecute执行命令,同时使用同步,等待该命令执行完成。

        SHELLEXECUTEINFO ShExecInfo = {0};
	ShExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
	ShExecInfo.fMask = SEE_MASK_NOCLOSEPROCESS;
	ShExecInfo.hwnd = NULL;
	ShExecInfo.lpVerb = NULL;
	ShExecInfo.lpFile = L"cmd.exe";//调用的程序名
	ShExecInfo.lpParameters = L"cmd.exe /c net start nginx";//调用程序的命令行参数
	ShExecInfo.lpDirectory = NULL;
	ShExecInfo.nShow = SW_HIDE;//窗口状态为隐藏
	ShExecInfo.hInstApp = NULL;
	ShellExecuteEx(&ShExecInfo);
	WaitForSingleObject(ShExecInfo.hProcess,INFINITE);////等到该进程结束


阅读更多
版权声明:转载请标明博客地址http://blog.csdn.net/u010780613。 https://blog.csdn.net/u010780613/article/details/54966264
个人分类: C++
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭