Я новичок в программировании для Windows и написал небольшую утилиту для mingw, которая разархивирует пакет.Код приведен ниже:
Описание:
Когда запускается следующая программа, результаты выглядят следующим образом:
XPSP2 32 битаи Windows 7
- Операция Untar: Успех
- Код возврата CreateProcess: Ноль Ноль (Успех)
- Код выхода: 0 (Успех)
XP2SP3 32 бита
- Операция Untar: успех
- Код возврата CreateProcess: ненулевой (успех)
- код выхода: 3221225477
Постановка проблемы
Я не уверен, почему только в патче XP2SP3 операция winRar обеспечиваеткод выхода как огромное положительное значение.Вы находите какие-либо проблемы в приведенном ниже коде?Пожалуйста, помогите в этом отношении.
int main()
{
string ProgramName = "C:\\Program Files\\WinRAR\\WinRAR.exe";
STARTUPINFO StartupInfo;
PROCESS_INFORMATION ProcessInfo;
memset(&StartupInfo, 0, sizeof(STARTUPINFO));
memset(&ProcessInfo, 0, sizeof(PROCESS_INFORMATION)
if (CreateProcess((LPCTSTR)ProgramName.c_str(),(LPCTSTR)"WinRAR.exe x -y -ibck d:\\abc.tar d:\\"),NULL,
NULL,
FALSE,
NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&StartupInfo,
&ProcessInfo) == 0)
{
string tmpStr("Error executing");
tmpStr += ProgramName;
cout<<"StmtDesigner"<<tmpStr<<"CreateProcess failed"<<endl;
}
else
{
string tmpStr("Succes executing");
tmpStr += ProgramName;
cout<<"StmtDesigner"<<tmpStr<<"CreateProcess Success"<<endl;
WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
DWORD exitCode=0;
if (GetExitCodeProcess(ProcessInfo.hProcess, &exitCode))
{
string tmpStr("GetExitCodeProcess");
tmpStr += ProgramName;
cout<<tmpStr<<"WinRAR.exe x -y -ibc<<endl;
}
}
CloseHandle(ProcessInfo.hProcess);
CloseHandle(ProcessInfo.hThread);
getch();
return 0;
}
PS: режим следа версии WinRar 3.8 используется для вышеупомянутого тестирования.