2013-07-21 63 views
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"; } 

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

+0

不MSVC++支持'系统'功能?如果是这样,你可以做'system(“cmd.exe/C rasdial adsl user pwd”)' – tohava

+0

yah它支持...但问题是我想得到执行输出 – afr0ck

回答

6

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

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 
} 
+0

完美... thnx – afr0ck

0

使用CreateProcee你有更多的选择看这个例子http://msdn.microsoft.com/en-us/library/windows/desktop/ms682512(v=vs.85).aspx等待程序完成与WaitForSingleObject

+0

这是很好的解决方案..thnx – afr0ck

+0

我不知道为什么我不断收到错误 CreateProcess失败(2)。 (即使使用微软提供的代码) – afr0ck

+0

@ user2355950您能否将'GetLastError'的结果扩展为'FormatMessage'(如在示例中使用的那样)http://msdn.microsoft.com/en-us/library/ms679351%28v= VS.85%29.aspx在页面下方)让我知道你看到的错误是什么。 – Dewfy

相关问题