C++获取外部exe程序的返回值

在自己的C++控制台程序里调用外部的7za.exe命令行工具,需要得到7za的返回值,以确定解压缩是否成功。


7-Zip 返回以下退出代码:

代码        含义 
0                 没有错误 
1                 警告(非严重错误)。比如一个或多个文件被其他程序锁定,它们将不会被压缩。 
2                 严重错误。
7                 命令行错误。
8                 操作所需要的内存不足。
255         用户中止了处理过程。


要执行的命令行例如: D:\7za.exe a D:\nv1.zip D:\test\*.*


测试代码如下:

#include "stdafx.h"
#include <Windows.h>
#include <iostream>
using namespace std;
 
int _tmain(int argc, _TCHAR* argv[])
{
STARTUPINFOA si;
PROCESS_INFORMATION pi;
 
ZeroMemory(&pi,   sizeof(pi)); 
ZeroMemory(&si,   sizeof(si)); 
si.cb=sizeof(STARTUPINFOA); 
 
TCHAR cmd[256] = _T("D:\\7za.exe a D:\\nv1.zip D:\\test\\*.*");
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;
getchar();
 
return 0;
}

运行结果:

7-Zip (A) 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
 
Scanning
 
Updating archive D:\nv1.zip
 
Compressing  abc.txt
Compressing  add.jnt
 
Everything is Ok
Exit Code : 0


已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 像素格子 设计师:CSDN官方博客 返回首页