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 :

lancement d'une application dans un programme


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut lancement d'une application dans un programme
    Bonjour,

    J'essaie actuellement d'integrer un programme en GAMS (autre langage, sur un autre logiciel) dans mon programme C++. Je reussis a ouvrir le logiciel automatiquement, et meme a ouvrir le bon fichier . Par contre, je reussis pas a demander au programme de se lancer automatiquement .
    Quelqu'un a t il deja tente la meme chose avec Gams? (ou avec un autre logiciel, ca doit pas etre tres different) Voici comment j'appelle ce que je veux executer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	gams="c:\\progra~1\\GAMS21.7\\gamside.exe h:\\gamside.ini h:\\gamsdir\\try02.gms lo2";
    	system(gams);
    j'obtiens le bon programme, le bon fichier, mais il ne s'execute pas! Je ne comprends pas...
    Une autre idee m'est passee par la tete pour resoudre ce probleme: ne peut on pas faire en sorte que le programme C++ appuie virtuellement sur une touche? Car dans ce cas, il suffirait au programme d'appuyer sur F9 pour faire "run".

  2. #2
    nac
    nac est déconnecté
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 33
    Points : 28
    Points
    28
    Par défaut
    et system ("start "+gams+"") ?

  3. #3
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    il vaut mieux utiliser shellexecute que system.
    http://c.developpez.com/faq/vc/?page...unRegistredApp
    http://c.developpez.com/faq/vc/?page=Registry#RunWord
    et voir les differents post sur le sujet sur le forum.

  4. #4
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    J'ai essaye system("start" "gams"); mais ca n'a pas eu l'air de marcher... Donc j'ai lu les tutoriaux, et j'ai tente de les mettre en application. Et ca n'a pas marche non plus... Il n'y a pas d'erreur lors de la compilation, mais rien ne s'ouvre... J'ai peut etre fait une erreur en adaptant le code, mais je ne sais as ou...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    		ShellExecute(
    		AfxGetMainWnd()->m_hWnd, 
    		"open", 
    		gams, 
    		NULL, 
    		NULL, 
    		SW_SHOWNORMAL);
    voici le message qui arrive au moment ou l'application est sensee s'ouvrir :
    layout.exe has encountered a problem and needs to close. We are sorry for the inconvenience.
    J'en profite pour me poser la question suivante : est ce que cette commande me permettra d'executer mon application en GAMS? Car bien que le nom de la fonction soit evocateur, le tutoriel parle d'ouvrir et non d'executer...

  5. #5
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Il semble que le probleme soit du au
    AfxGetMainWnd()->m_hWnd
    J'ai essaye de changer ca en "Handle" comme je l'ai vu dans certains tutoriaux , mais ca ne marche pas non plus. Maintenant, j'ai une erreur lors de la compilation :
    H:\c++\layout.cpp(112) : error C2065: 'Handle' : undeclared identifier
    (J'ai meme rajoute un "#include ShellApi.h")

  6. #6
    Membre actif Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Points : 203
    Points
    203
    Par défaut
    handle c'est en MAJ qu'il faut l'écrir je crois

  7. #7
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut,
    quelle est la nature de ton application ?
    console ? ,graphic win32,MFC ?
    tu peux aussi mettre le premier argument a null de shellexecute.
    tu peux aussi utiliser CreateProcess
    http://c.developpez.com/faq/vc/?page...ead#ProcessNew

  8. #8
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Mon application est un programme de programmation lineaire ecrit sur GAMS.
    J'ai essayé de mettre HANDLE en majuscules, mais j'ai un autre message d'erreur :
    H:\c++\layout.cpp(112) : error C2275: 'HANDLE' : illegal use of this type as an expression
    Je commence a me taper la tete contre les murs... Shellexecute avait l'air si simple a utiliser...

  9. #9
    Futur Membre du Club
    Inscrit en
    Juin 2005
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Juin 2005
    Messages : 17
    Points : 5
    Points
    5
    Par défaut
    Ca y est, je sais pourquoi ca ne marchait pas, je dois invoquer plusieurs url en meme temps pour que ca marche, et le shellexecute ne veut pas faire ca... J'ai donc trouvé une parade, mais je me rends compte maintenant que si ca ouvre effectivement le programme, ca ne l'execute pas... Il faudrait que l'ordinateur decide en plus d'appuyer sur "run"...

Discussions similaires

  1. Réponses: 16
    Dernier message: 24/10/2013, 11h00
  2. Réponses: 2
    Dernier message: 31/05/2013, 17h12
  3. Remplir un formulaire dans une application via un programme JAVA
    Par konkzor dans le forum Général Java
    Réponses: 7
    Dernier message: 11/07/2012, 15h14
  4. Réponses: 2
    Dernier message: 05/12/2003, 11h37
  5. [] Utiliser AVI d'une DLL dans mon programme
    Par seb.49 dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 02/05/2003, 14h52

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