Problème avec CreateProcess

Résolu
cs_mioux Messages postés 7 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 2 juillet 2009 - 27 mai 2005 à 14:00
cs_mioux Messages postés 7 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 2 juillet 2009 - 30 mai 2005 à 00:38
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

bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
29 mai 2005 à 14:36
2? Alors c'est fichier introuvable ça...


mayonaise tournera, bientôt, très bientôt...
3
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
28 mai 2005 à 17:50
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...
0
cs_mioux Messages postés 7 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 2 juillet 2009
29 mai 2005 à 12:49
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
0
vecchio56 Messages postés 6535 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 22 août 2010 12
29 mai 2005 à 15:57
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 );
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_mioux Messages postés 7 Date d'inscription lundi 10 novembre 2003 Statut Membre Dernière intervention 2 juillet 2009
30 mai 2005 à 00:38
J'ai trouvé mon problème... pas de chemins relatifs dans un CreateProcess... faut lire les docs jusqu'au bout ^^
0