EP
Size: a a a
EP
CD
EP
IA
ПК
EP
ПК
CD
ПК
IA
МВ
CD
OT
HANDLE hServer = { NULL };
HANDLE hClient = { NULL };
// set default setting and enable inherit
SECURITY_ATTRIBUTES sa = { NULL };
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.bInheritHandle = TRUE;
// try to create pipe
if ((!CreatePipe(&hServer, &hClient, &sa, NULL)) ||
(hServer == INVALID_HANDLE_VALUE)||(hClient == INVALID_HANDLE_VALUE))
{
CloseHandle(hClient);
CloseHandle(hServer);
ShowError();
return;
}
// set default settings for STARTUPINFO structa and
// redirect stderr and stdout to pipe (phServer)
STARTUPINFO si = { NULL };
si.cb = sizeof(si);
si.dwFlags = STARTF_USESTDHANDLES;
si.hStdError = hServer;
si.hStdOutput = hServer;
PROCESS_INFORMATION pi = { NULL };
if (!CreateProcess(NULL,
cmdForNewProc,
NULL,
NULL,
TRUE,
ABOVE_NORMAL_PRIORITY_CLASS,
NULL,
NULL,
&si,
&pi
))
{
CloseHandle(hClient);
CloseHandle(hServer);
ShowError();
return;
}
WaitForSingleObject(pi.hProcess, INFINITE); // wait until the process completes
TerminateProcess(pi.hProcess, 0); // terminate process 7zip process
DWORD dwReadedBytes = 0;
TCHAR buff[READ_PIPE_BUFF_SIZE] = { '\0' };
//OVERLAPPED overlaped = { NULL };
while (ReadFile(hClient, buff, sizeof(buff), &dwReadedBytes, NULL))
{
cout << buff;
}
IA
IL
IA
IL
IL
IA