» Poradna » Programy

Int i = system(program.exe) ...nechcem aby otvaral CMD

Odpovědět  |  Zobrazit bez stromu  |  Upozornit redakci  |  nových odpovědí: 5/5
 |   |   |  [62.197.192.---]

ako to mam spravit, neviete mi niekto poradit ? Robim aplikaciu v Visual Studiu. Skusal somCreate proces, z toho vsak neviem v tom pripade hodnotu i(je hodnota ktoru vrati to execko, neni ani v errno, ...nikde ) Poradte PLS. Dakujem.

Odpovědi na otázku

 |   |   |  [217.197.156.---]

Ve VisualBasicu je funkce "shell", kterou volám takhle:

i=shell("program.exe parametry_k_programu",vbHide)

netuším, jak je to u tebe, ale zkus se mrknout po doplňkových parametrech příkazu "system"

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |   |  [217.119.117.---]

no system praveye nema ani moc doplnkove parametre ...praveye .. :(

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

CreateProcess je ok, a potom pouzi GetExitCodeProcess..
.. nejaky vhodny exampel najdes na webe

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |   |  [62.197.192.---]

STARTUPINFO siStartupInfo;
PROCESS_INFORMATION piProcessInfo;
DWORD *Result;
Result = new DWORD;
*Result = 0;
memset(&siStartupInfo, 0, sizeof(siStartupInfo));
memset(&piProcessInfo, 0, sizeof(piProcessInfo));
siStartupInfo.cb = sizeof(siStartupInfo);
LPTSTR parametre = "..\\out\\program.exe";
LPTSTR parametre2 = "PARAMETRE1 PARAMETRE2";
if(CreateProcess(parametre, parametre2, 0, 0, FALSE, CREATE_DEFAULT_ERROR_MODE, 0, 0, &siStartupInfo, &piProcessInfo) == FALSE)
::AfxMessageBox("nepodarilo sa pustit to execko");
int e_errno_i = errno;
WaitForSingleObject(piProcessInfo.hProcess, INFINITE);
CString e_errno = strerror(errno);
int e_doserrno = _doserrno;
int e_sys_nerr = _sys_nerr;
CloseHandle(piProcessInfo.hThread);
CloseHandle(piProcessInfo.hProcess);
GetExitCodeProcess(piProcessInfo.hProcess, Result);

no takto nejako to aj pouzivam, no vrati to stale nulu(co by teda urcite nemalo, system("program.exe") vrati to co ma ...akorat to cmd ma stve ...

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   |   |  [195.28.87.---]

No iste, kedze zavolas CloseHandle() na proces pred zistenim jeho exit-code, je hProcess handle uz, potom, neplatna. Ved si mkrni na GetLastError() po tvojom volani GetExitCodeProcess() a zistis, ze ti vrati invalid_handle_value a GetExitCodeProcess() urcite vracia FALSE.

Souhlasím  |  Nesouhlasím  |  Odpovědět



Určitě si přečtěte


Kingdome Come – recenze, mapa a další informace

Kingdome Come – recenze, mapa a další informace

Kingdome Come: Deliverance je unikátní hra z prostředí českého středověku. Zjistěte si všechny informace o této celosvětově úspěšné hře českých tvůrců.

13.  2.  2018 | Vojtěch Malý | 11


Aktuální číslo časopisu Computer

Jak vznikají filmové efekty

Test ATX skříní a externích disků

Znáte svá práva při reklamaci?

Průvodce první instalací NASu