c++获得外部程序返回值的问题

最好能用API,不用cout<<system("test.exe")<<endl;这种方法非MFC对不起,不要粘贴的,不好使,谢谢... 最好能用API,不用cout << system("test.exe") << endl;这种方法
非MFC
对不起,不要粘贴的,不好使,谢谢
展开
 我来答
478617
2014-08-13 · TA获得超过875个赞
知道小有建树答主
回答量:725
采纳率:100%
帮助的人:94.6万
展开全部

STARTUPINFOA si;  

PROCESS_INFORMATION pi;  

   

ZeroMemory(&pi,   sizeof(pi));   

ZeroMemory(&si,   sizeof(si));   

si.cb=sizeof(STARTUPINFOA);   

   

TCHAR cmd[256] = _T("test.exe");  //设置外部程序名

BOOL working = ::CreateProcess(NULL,cmd,NULL,NULL,FALSE,NORMAL_PRIORITY_CLASS ,NULL,NULL,&si,&pi);  //建立程序

if (working == 0)  //打开错误


{  

DWORD error = GetLastError();  

cout << "CreateProcess Error : " << error << endl;  

getchar();  

return 0;  

}  

   

WaitForSingleObject(pi.hProcess, INFINITE);  //等待程序结束

   

unsigned long Result;    

GetExitCodeProcess(pi.hProcess, &Result);  //得到程序返回值

   

cout << "Exit Code : " << Result << endl;  //输出返回值


很好用呀,你程序返回值是什么类型的数据?

我不知道你的text.exe是什么样的,我用ipconfig.exe代替,执行结果如下

如果你不想看被调用程序的输出,可以将CreateProcess()函数里的NORMAL_PRIORITY_CLASS改成NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式