Problème avec CreateProcess [Résolu]

Signaler
Messages postés
7
Date d'inscription
lundi 10 novembre 2003
Statut
Membre
Dernière intervention
2 juillet 2009
-
Messages postés
7
Date d'inscription
lundi 10 novembre 2003
Statut
Membre
Dernière intervention
2 juillet 2009
-
Salut

Je cherche une solution à un problème tout bête... il faut que je lance un programme et que j'attende qu'il s'arrete pour continuer l'exécution du mien...

void launch(char *file)
{
STARTUPINFO si;
PROCESS_INFORMATION pi;

command_line_add(file);

ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));

// Start the child process.
if( !CreateProcess( NULL, // No module name (use command line).
filecom, // 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.
)
{
printf( "CreateProcess failed (%d).\n", GetLastError() );
return;
}

// Wait until child process exits.
WaitForSingleObject( pi.hProcess, INFINITE );

// Close process and thread handles.
CloseHandle( pi.hProcess );
CloseHandle( pi.hThread );
}

"file" contient une chaine de caractère indiquant une vidéo (par ex : ".\\video\\Burning.avi") et "command_line_add" transforme le pointeur pour y ajouter le chemin du lecteur (mais si il faut, je peux enlever ce code).
ShellExecute fonctionne mais mon programme continue alors que ma vidéo tourne.
Ce code me renvoie "CreateProcess failed (2)." et j'ai pas trouvé à quoi correspond le code de retour 2. Si quelqu'un pouvait m'aider, ca serait sympa ;p

5 réponses

Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

2? Alors c'est fichier introuvable ça...


mayonaise tournera, bientôt, très bientôt...
Messages postés
224
Date d'inscription
mardi 12 août 2003
Statut
Membre
Dernière intervention
18 octobre 2010

Et que revoit GetLastError?
Je ne sais pas si CreateProcess fait les associations de fichiers comme le shell: faudait essayer avec un programme et sa ligne de commande...


mayonaise tournera, bientôt, très bientôt...
Messages postés
7
Date d'inscription
lundi 10 novembre 2003
Statut
Membre
Dernière intervention
2 juillet 2009

Salut

GetLastError renvoie "2"

D'où l'affichage de "CreateProccess failed (2)"

Eh ben, quand je voit que je butte sur un truc si simple, je me dis que mon front end est pas prêt pour demain ;p
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
8
Pour éviter d'apprendre les codes d'erreur par coeur:



LPVOID lpMsgBuf;

if (!FormatMessage(

FORMAT_MESSAGE_ALLOCATE_BUFFER |

FORMAT_MESSAGE_FROM_SYSTEM |

FORMAT_MESSAGE_IGNORE_INSERTS,

NULL,

GetLastError(),

MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language

(LPTSTR) &lpMsgBuf,

0,

NULL ))

{

// Handle the error.

return;

}



// Process any inserts in lpMsgBuf.

// ...



// Display the string.

MessageBox( NULL, (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );



// Free the buffer.

LocalFree( lpMsgBuf );
Messages postés
7
Date d'inscription
lundi 10 novembre 2003
Statut
Membre
Dernière intervention
2 juillet 2009

J'ai trouvé mon problème... pas de chemins relatifs dans un CreateProcess... faut lire les docs jusqu'au bout ^^