Problem rozwiązany - prawidłowo powinno się to wywoływać tak:
7za.exe h "C:\Users\Mikołaj\Desktop\file.7z" > "C:\Users\Mikołaj\Desktop\test.txt"
I wówczas wszystko działa. Kolejny problem pojawia się, gdy chcę zrobić wszystko jak wyżej, ale zaimplementowane do C++. Robię to w następujący sposób:
SHELLEXECUTEINFO seinfo;
ZeroMemory(&seinfo, sizeof(SHELLEXECUTEINFO));
seinfo.cbSize = sizeof(SHELLEXECUTEINFO);
seinfo.fMask = SEE_MASK_NOCLOSEPROCESS;
seinfo.lpDirectory = TEXT(Is64BitWindows() ? (ExePath() + "\\bin\\7zip\\x64\\").c_str() : (ExePath() + "\\bin\\7zip\\").c_str()); //lokalizacja 7zip w zaleznosci od ilosci bitow w systemie
seinfo.lpFile = TEXT("7za.exe");
seinfo.lpParameters = TEXT("h C:\\Users\\Mikołaj\\Desktop\\file.7z > C:\\Users\\Mikołaj\\Desktop\\test.txt"); //parametry dla 7zip
seinfo.nShow = SW_SHOWNORMAL;
ShellExecuteEx(&seinfo);
Niestety, ale wszystko wywołuje się, ale znów wypisuje się do konsoli zamiast do pliku txt. Jest to o tyle dziwne, że w obydwu przypadkach podaje te same argumenty, tyle że dla cmd lub ShellExecute
, a działa zupełnie inaczej. Co może być tego przyczyną?