IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

CreateProcess et ShellExecute


Sujet :

MFC

  1. #1
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut CreateProcess et ShellExecute
    J'ai un problème avec CreateProcess et ShellExecute. Je veux lancer un Robot3OouvrePince.exe qui fait bouger mon robot. Quand j'utilise mon programme pour executer un autre .exe du type Morpion.exe ca marche très bien, mais quand je le fais pour mon Robot3OuvrePince.exe le robot ne bouge pas. Cependant un doubleclick direct sur Robot3OuvrePince.exe lance l'appli et ouvre la pince du robot. Ou peut être le problème? (les 2 .exe sont dans le même repertoire et mon chemin d'accès est bon).

    merci...

  2. #2
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    As-tu testé le retour des fonctions ? que dit GetLastError ?

  3. #3
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Pour le ShellExecute, l'erreur vaut 5, et le CreateProcess me signal aussi une erreur, le GetLastError me retourne 87.

  4. #4
    Membre habitué
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    189
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Février 2004
    Messages : 189
    Points : 126
    Points
    126
    Par défaut
    tiens dans la fac il y a de quoi traduire le code d'erreur, ca pourra surement t'aiguiller :-)

    http://c.developpez.com/faq/vc/?page...etLibLastError

  5. #5
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Benh "le paramètre est incorrect"... Ca ne m'aide pas beaucoup.L'erreur me donne toujours paramètre incorrect, cependant comme je l'ai dis il lance une application et pas l'autre.

    J'ai une 10aine d'appli pour bouger le robot, et aucune ne marche avec ces 2 fonctions. Quand j'insère dans le même repertoire d'autre executable, ca marche nickel. Idem quand je le fais pour ouvrir une page internet ou un logiciel. Mais avec ces applis, problème!

    Le problème pourrait-il venir du fait que je veux lancer une appli MSDOS?

  6. #6
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    montre voir ton code ?

  7. #7
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    ShellExecute(NULL,
    "open",
    "D:\\Bare\\Positions\\Bras3OuvrePince.exe",
    NULL,
    NULL,
    SW_SHOWNORMAL);
     
     printf( "CreateProcess failed (%d).\n", GetLastError() );
     LPVOID lpMsgBuf;
     
     FormatMessage(
        FORMAT_MESSAGE_ALLOCATE_BUFFER |
        FORMAT_MESSAGE_FROM_SYSTEM |
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        GetLastError(),
        0, // Default language
        (LPTSTR) &lpMsgBuf,
        0,
        NULL
       );
     
       // Process any inserts in lpMsgBuf.
       // ...
       // Display the string.
       printf("%s",(LPCTSTR)lpMsgBuf);
       // Free the buffer.
       LocalFree( lpMsgBuf );


    Voilà pour le ShellExecute (désolé pour le multipost je sais pas ce qui s'est passé! )

    Pour le CreateProcess c'est la même avec la ligne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    CreateProcess(
        TEXT( "D:\\Bare\\Positions\\Bras3OuvrePince.exe" ),
        TEXT( "" ),
        NULL,
        NULL,
        FALSE,
        CREATE_NO_WINDOW,
        NULL,
        NULL,                              
        &si,
        &pi )
    ) la palce du ShellExecute.

    Les appli 16bit, c'est peut être ca le problème? Est-ce qu'elle passe avec ces fonctions?


  8. #8
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    essaie en lancant la commande "cmd.exe" et avec comme paramètres "/c D:\\Bare\\Positions\\Bras3OuvrePince.exe"

  9. #9
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    J'ai pas cerné ce que tu me dis.

    En gros

    CreateProcess("cmd.exe",
    "/c D:\\Bare\\Positions\\Bras3OuvrePince.EXE",0,0,FALSE,
    CREATE_DEFAULT_ERROR_MODE,0,0,
    &si,&pi)

    C'est ça? Je vois pas ce que ca peut faire, mais j'ai essayé et la --> Le fichier spécifé est introuvable! Ca change l'erreur lol!
    Je n'arrive pas à cerner d'ou peut venir le problème! On ma conseillé une autre fonction : fopen, mais aucun résultat!

  10. #10
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    tu as quel windows ?

  11. #11
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    J'ai XP. C'était bien ca que tu me demandais de faire?

  12. #12
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    oui, sauf que j'aurai écrit un truc du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    CreateProcess(NULL, "cmd.exe "/c D:\\Bare\\Positions\\Bras3OuvrePince.EXE",0,0,FALSE,
                         CREATE_DEFAULT_ERROR_MODE,0,0,                             
                         &si,&pi)

  13. #13
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Benh il manquera un paaramètre comme ça non?!? Et pourquou il n'y a que 3 " ?

  14. #14
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CreateProcess( NULL, "cmd.exe /c d:\\....", NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi )

  15. #15
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Toujours le même problème !
    Cependant j'ai du nouveau ! Si je créer un fichier .bat avec le chemin d'accès de mon .exe, et qu'avec ShellExecute() ou CreateProcess() je lance mon .bat, miracle ca marche !

    ???????????

  16. #16
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    si tu utilises l'interpréteur de commande cmd.exe /c , ca devrait faire la meme chose

  17. #17
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Benh on le faisant, ca me met que le chemin d'accées est incorect! Pourtant le chemine est le bon puisque dans mon .bat, je lance la ligne D:\Bare\Positions\Bras3OuvrePince.exe , et la aucun problème! Cependant je viens de penser à quelquechose: ShellExecute et CreateProcess ne fonctionne QUE sur des appli 32bits (je crois) ?? Moi c'est une applis 16bits, donc peut être que le problème vient de là non?

    j'ai essayé avec fopen("D:\\....", "r"); mais rien!

  18. #18
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    ok, en fait, ca ne marche pas parce que ton appli a un nom long
    Si tu l'appelles avec un nom court, ca devrait marcher
    utilise GetShortPathName pour avoir le nom court

  19. #19
    Membre régulier
    Inscrit en
    Avril 2006
    Messages
    177
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 177
    Points : 115
    Points
    115
    Par défaut
    Mais j'ai essayé en l'appelant Br.exe et ca marche pas non plus! j'ai aussi essayé en la métant direct C:\Br.exe, D:\Br.exe, mais rien à faire!

  20. #20
    Rédacteur
    Avatar de nico-pyright(c)
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    6 414
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 6 414
    Points : 16 075
    Points
    16 075
    Par défaut
    bon, ben ... là, comme ca, je n'ai plus trop d'idée
    Sinon, si cela ne te pose pas d'inconvénients, tu peux voir aussi du coté des fonctions WinExec et system ...

Discussions similaires

  1. ShellExecute / CreateProcess / ShellExecuteEx
    Par wizdom dans le forum API, COM et SDKs
    Réponses: 7
    Dernier message: 17/02/2010, 10h19
  2. CreateProcess, ShellExecute
    Par cat1982 dans le forum Langage
    Réponses: 5
    Dernier message: 03/05/2006, 15h32
  3. [EXECUTION] CreateProcess / ShellExecute
    Par jmdeffet dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 14/10/2004, 10h33
  4. CreateProcess + paramètres passé
    Par obione dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 20/03/2003, 17h25
  5. Réponses: 2
    Dernier message: 18/11/2002, 09h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo