Prueba con esta rutinabool TFNProcesosSistema::ArrancaProceso(char *lszNombreProceso,DWORD &ldwIdProcesoActual,bool Visible)
{
bool bCreado;
STARTUPINFO si;
PROCESS_INFORMATION pi = {0};
/*
typedef struct _STARTUPINFO { // si
DWORD cb;
LPTSTR lpReserved;
LPTSTR lpDesktop;
LPTSTR lpTitle;
DWORD dwX;
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars;
DWORD dwYCountChars;
DWORD dwFillAttribute;
DWORD dwFlags;
WORD wShowWindow;
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput;
HANDLE hStdOutput;
HANDLE hStdError;
} STARTUPINFO, *LPSTARTUPINFO;
*/
memset(&si, 0, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
si.lpReserved = NULL;
si.lpReserved2 = NULL;
si.cbReserved2 = 0;
si.lpDesktop = NULL;
si.dwFlags = STARTF_USESHOWWINDOW;
si.wShowWindow=(Visible)?SW_SHOWDEFAULT:SW_HIDE;
bCreado=CreateProcess(NULL,
lszNombreProceso,
NULL,//security
NULL,// security
TRUE,//inherits handles
0,
0,
0,
&si,
&pi);
ldwIdProcesoActual=pi.dwProcessId;
return(bCreado);
}
Saludos
drjoju