Estoy haciendo una aplicación y necesito llamar a un pequeño programa en modo DOS. He probado con execl, pero me da error. Com se puede hacer esto?
prueba con system()
pero al programa le tengo que pasar parametros, pruebo con
system("potrace -o out"); por ejemplo?
EDIT: lo he probado y funciona pero se abre una ventana de ms-dos ( de esas negras) y claro, no es deseable que esta ventana aparezca. Hay alguna otra alternativa?
En windows si no quieres usar el system, te queda esto otro que es mas limpio y da mas control:
STARTUPINFO si;
PROCESS_INFORMATION pi;
ZeroMemory( &si, sizeof(si) );
si.cb = sizeof(si);
ZeroMemory( &pi, sizeof(pi) );
// Ejecutamos la aplicacion como un proceso independiente
if(!CreateProcess( NULL, // No module name (use command line).
"myapp.exe", // Command line.
NULL, // Process handle not inheritable.
NULL, // Thread handle not inheritable.
FALSE, // Set handle inheritance to FALSE.
0, // No creation flags.
NULL, // Use parent's environment block.
NULL, // Use parent's starting directory.
&si, // Pointer to STARTUPINFO structure.
&pi )) // Pointer to PROCESS_INFORMATION structure.
{
AfxMessageBox("Fatal error at loading application",MB_ICONSTOP);
return;
}
// Podemos esperar a que finalice la aplicacion
//WaitForSingleObject( pi.hProcess, INFINITE );
// Cerramos los manejadores.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
saludos
Tambien dispones de la funcion
ShellExecute