Wywoluje pobieranie za pomoca windowsowego wget i nie wiem jak sprawdzic czy zostalo skoczony download aby program wywolujacy wget mogl robic nastepne rzeczy?
Sprawdzasz return value. W batchu to jest zmienna errorlevel, w shellach unixowych $?
a dlaczego niektore komendy nie dzialaja w ShellExecute() a w system() dzialaja? np. cd > file.txt
?
cd
jest poleceniem wewnętrznym powłoki systemowej, nie osobnym programem.
ShellExecute uruchamia programy, a nie komendy tak jakby były wpisane w konsoli.
Polecenia wewnętrzne można wywoływać przez cmd /c
, np.
cmd /c cd > file
I to powinno przejść przez ShellExecute.
Pytanie tylko po co, skoro od tego jest GetCurrentDirectory()
.
a w system() dzialaja?
Podejrzewam że system()
wywołuje cmd
z parametrem /c
, a nie bezpośrednio to co mu podajesz.
a jak sprawdzić zakonczenie działania programu wywolanego przez ShellExecute ?
a google gryzie?
SHELLEXECUTEINFO seinfo;
ZeroMemory(&seinfo, sizeof(SHELLEXECUTEINFO));
seinfo.cbSize = sizeof(SHELLEXECUTEINFO);
seinfo.fMask = SEE_MASK_NOCLOSEPROCESS;
seinfo.lpFile = TEXT("C:\\windows\\system32\\notepad.exe");
seinfo.nShow = SW_SHOW;
ShellExecuteEx(&seinfo);
if(seinfo.hProcess)
MessageBox(NULL, "Nie udalo sie uruchomic procesu", "Blad", MB_ICONERROR);
else
{
WaitForSingleObject(seinfo.hProcess, INFINITE);
MessageBox(NULL, "Program zakończył działanie", "Sukcess", MB_ICONEXCLAMATION);
}
(skopiowane z pierwszego wyniku znalezionego w google)