» Poradna » Programy

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

 |   | 

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

 |   | 

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
 |   | 

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
 |   | 

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
 |   | 

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

Užitečné funkce ve Windows 10, o kterých možná ani nevíte

Užitečné funkce ve Windows 10, o kterých možná ani nevíte

** Operační systém Windows 10 nabízí spoustu užitečných drobností ** O některých funkcích mnoho uživatelů není ** Ukážeme vám některé užitečné vychytávky

Vladislav Kluska | 83

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

Vyzkoušeli jsme eObčanku a přihlásili se s ní na weby úřadů. Vážně to funguje!

** Máme eObčanku, máme čtečku, vyzkoušeli jsme přihlášení na weby úřadů. ** Objevily se drobné problémy, podařilo se nám je vyřešit. ** Používání eObčanky pro online identifikaci je velmi pohodlné.

Marek Lutonský | 36



Aktuální číslo časopisu Computer

Nejlepší programy pro úpravu fotek zdarma

Externí disky pro zálohu dat

Velký test: herní notebooky

Srovnání 12 batohů