使用CreateProcess执行命令行

BOOL
	ExecuteCommand(
	IN LPTSTR lpCommand
	)
{
	BOOL				bRet					= FALSE;

	UINT				uResult					= 0;
	TCHAR				CommandLine[MAX_PATH]	= {0};
	STARTUPINFO			StartupInfo				= {0};
	PROCESS_INFORMATION	ProcessInfo				= {0};


	__try
	{
		uResult = GetSystemDirectory(CommandLine, MAX_PATH);
		if (!uResult)
		{
			printf("[ExecuteCommand] : GetSystemDirectory failed. (%d) \n", GetLastError());
			__leave;
		}

		_tcscat_s(CommandLine, MAX_PATH, _T("\\cmd.exe /c "));
		_tcscat_s(CommandLine, MAX_PATH, lpCommand);

		StartupInfo.cb = sizeof(STARTUPINFO);
		StartupInfo.dwFlags = STARTF_USESHOWWINDOW;
		StartupInfo.wShowWindow = SW_HIDE;

		bRet = CreateProcess(NULL, CommandLine, NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, NULL, &StartupInfo, &ProcessInfo);
		if (!bRet)
		{
			printf("[ExecuteCommand] : CreateProcess failed. (%d) \n", GetLastError());
			__leave;
		}
	
		if (ProcessInfo.hProcess)
		{
			// 是cmd的句柄
			WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
		}
	}
	__finally
	{
		if (ProcessInfo.hProcess)
			CloseHandle(ProcessInfo.hProcess);

		if (ProcessInfo.hThread)
			CloseHandle(ProcessInfo.hThread);
	}
	return bRet;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值