1

我正在尝试通过程序执行系统命令,然后等到进程终止以继续执行代码的指令。我一直在使用sleep(),但没有成功,因为它是相对的,我的意思是执行时间因机器而异......所以有什么解决方案吗?

考虑下面的代码(语言==c++):

ShellExecute(0, "open", "cmd.exe","/C rasdial adsl user pwd", 0, SW_HIDE); //can also use system().
Sleep(sec);
if(CheckConnection()) {cout <<"U r connected"; }

等到执行系统命令以检查连接(我想你现在明白了)。

4

2 回答 2

6

使用 ShellExecuteEx 而不是 ShellExecute,然后使用您收到的 hProcess 调用 WaitForSingleObject:

SHELLEXECUTEINFO info = { sizeof(SHELLEXECUTEINFO) };
// fill in values in SHELLEXECUTEINFO as necessary
if (ShellExecuteEx(&info))
{
    WaitForSingleObject (info.hProcess, INFINITY);
    // The new process has now completed
}
else
{
    // Launch failed
}
于 2013-07-21T15:27:49.903 回答
0

使用CreateProcee您有更多选项,请参阅此示例http://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx等待程序完成WaitForSingleObject

于 2013-07-21T15:31:31.763 回答