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

C++ Discussion :

appelé un .exe sans l'utilisation de ShellExecute


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 100
    Points : 41
    Points
    41
    Par défaut appelé un .exe sans l'utilisation de ShellExecute
    Bonjour,

    Je travail avec Visual C++ .NET sur une application de type smart Device Win 32. le compilateur ne reconnait pas la fonction ShellExecute(......); (j'ai ajouté les bibliothèques nécessaires shell32.h er shell32.lib).

    Est-ce qu'il y a un autre moyen pour appeler un .exe??

    merci

  2. #2
    Alp
    Alp est déconnecté
    Expert éminent sénior

    Avatar de Alp
    Homme Profil pro
    Inscrit en
    Juin 2005
    Messages
    8 575
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Juin 2005
    Messages : 8 575
    Points : 11 861
    Points
    11 861
    Par défaut
    Il y a system(), héritée du C, mais ce n'est pas très propre.
    C'est une application graphique que tu veux appeler ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 100
    Points : 41
    Points
    41
    Par défaut
    l'application que j'appel a une interface graphique. mais le problème qui se pose c'est qu'il ne reconnait même pas la fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      .\Assemblage.cpp(210) : error C3861: 'ShellExecute': identifier not found

  4. #4
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Dans ce cas, tu peux essayer avec CreateProcess()...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 100
    Points : 41
    Points
    41
    Par défaut
    merci je vais essayé CreateProcess()

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 100
    Points : 41
    Points
    41
    Par défaut
    Bonjour,

    en utilisant CreateProcess() avec un exemple simple, le compilateur reconnait la fonction mais il me met une erreur que je n'arrive pas a la résoudre:

    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
     
    	PROCESS_INFORMATION Process;
    STARTUPINFO si;
    memset(&si, 0, sizeof(si));
    si.cb = sizeof(si);
     
     
     
    CreateProcess("C:\\Program Files\\Mozilla Firefox\\firefox.exe",
    				NULL,
    				NULL,
    				NULL, 
    				FALSE, 
    				0, 
    				NULL,
    				"C:\\Program Files\\Mozilla Firefox\\", 
    				&si, 
    				&Process) ;
    et voilà l'erreur qu'il m'affiche:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    .\Assemblage.cpp(185) : error C2664: 'CreateProcessW' : cannot convert parameter 1 from 'const char [45]' to 'LPCWSTR'
    Merci

  7. #7
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 382
    Points : 41 589
    Points
    41 589
    Par défaut
    Utilise la macro _T() ou TEXT() autour des chaînes.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    100
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2008
    Messages : 100
    Points : 41
    Points
    41
    Par défaut
    ça marche mais j'ai un autre problème c'est qu'il m'affiche impossible d'ouvrire 'Kernel32.lib'

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    LINK : fatal error LNK1181: impossible d'ouvrir le fichier en entrée 'Kernel32.lib'

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