从网上找了段代码,但是并没有获得结果。
目的是要运行”cmd.exe /c PECheck.exe 指定文件“这样的命令。
wsprintf(cmdline, TEXT("cmd.exe /c PECheck.exe %s"), szFilePath);
SECURITY_ATTRIBUTES sa;
HANDLE hRead, hWrite;
sa.nLength = sizeof(SECURITY_ATTRIBUTES);
sa.lpSecurityDescriptor = NULL;
sa.bInheritHandle = TRUE;
if (!CreatePipe(&hRead, &hWrite, &sa, 0)) {
DWORD ret = GetLastError();
return ret ? ret : -1;
}
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
GetStartupInfo(&si);
si.hStdError = hWrite;
si.hStdOutput = hWrite;
si.wShowWindow = SW_HIDE;
si.dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;
if (!CreateProcess(NULL, cmdline, NULL, NULL, TRUE, NULL,
NULL, NULL, &si, &pi)) {
DWORD ret = GetLastError();
CloseHandle(hRead);
CloseHandle(hWrite);
return ret ? ret : -1;
}
CloseHandle(hWrite);
DWORD bytesRead;
while (true) {
if (!ReadFile(hRead, buffer, 1024, &bytesRead, NULL)) break;
Sleep(100);
}
DWORD exitCode = 0;
GetExitCodeProcess(pi.hProcess, &exitCode);
CloseHandle(hRead);
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
SetDlgItemText(hwnd, IDC_PACKTYPE, buffer);