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

API, COM et SDKs Delphi Discussion :

Lancer une appli 64 bits à partir d'un programme en 32 bits


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 447
    Par défaut Lancer une appli 64 bits à partir d'un programme en 32 bits
    Bonjour,
    J'essaie de lancer une application externe 64 bits a partir de mon application qui tourne en 32 bits sur un seven 64 bits.
    Que j'utilise CreateProcess ou ShellExcecute j'ai la même erreur 50.
    Y a-t-il une solution sachant que mon appli doit tourner sur des machines en 32 ou 64 bits et lancer des applis externes en 32 ou 64 bits.

    Merci et bonne année à tous.

    Bernard

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    très étonnant, peut-on voir ton code ?
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 447
    Par défaut
    Voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                  if ShellExecute(Handle,'open',
                                PChar('"'+Fen_VisuApercus.Appli_TraitementImages.FileName+'"'),
                                PChar('"'+FFichierImage+'"')
                                ,nil,SW_SHOW)<=32 then
                                ShowMessage(SysErrorMessage(GetLastError));
    Pour compléter, l'application de traitement d'image c'est en l'occurence Photoshop, si je pointe sur la version 32 bits elle se lance si je pointe sur la version 64 bits j'ai l'erreur 50.
    Avec Microsoft ICE en version 64 bits la seule que je puisse intaller sur un Seven 64 bits j'ai l'erreur 50.
    Si Photoshop par exemple est lancé et que je passe cette commande, il m'ouvre bien mon image et me remonte Photoshop en premier plan : normal.

  4. #4
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    C'est à priori un problème de droit (NB: RaiseLastOSError est plus pratique que le GetLastError)

    Failing with ERROR_NOT_SUPPORTED
    Perhaps it should be noted that the function fails with GetLastError() == ERROR_NOT_SUPPORTED when starting executable that requires elevation on Windows Vista and the SEE_MASK_FLAG_DDEWAIT was not used. At least this is how it behaves on my laptop. The solution obviously is to include the flag.
    http://msdn.microsoft.com/en-us/libr...(v=vs.85).aspx

    Voir aussi
    http://stackoverflow.com/questions/1...-it-to-termina
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement en retraite
    Inscrit en
    Juin 2002
    Messages
    447
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement en retraite
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juin 2002
    Messages : 447
    Par défaut
    Bonsoir,
    Après un petit break, je reprends le fil.
    Tu as raison Paul il doit s'agir d'un problème de droit car en utilisant ShellExecuteEx avec le commande "runas" qui demande une élévation de privilèges, l'appli 64 bits est bien lancée !
    Pour m'affranchir des besoins particulier d'une appli tierce, je me suis créé une petite appli en Delphi qui affiche une image JPG. Je l'ai compilée en 32 et en 64 bits. J'ai créé un lanceur (32 bits) qui lance la 32 ou la 64 bits avec les mêmes paramètres.
    J'obtiens le même phénomène :
    Si je lance l'exe 32 bits pas de soucis ça marche.
    Si je lance l'exe 64 bits sans élévation de privilèges erreur 50 : "Cette demande n'est pas prise en charge.".
    Avec élévation de privilèges, j'ai l'écran de l'UAC pour autoriser la lancement et ça fonctionne !
    Je ne comprend pas bien la subtilité. Si quelqu'un à une autre solution je suis preneur.
    Merci.

Discussions similaires

  1. Lancer une appli .net à partir d'une appli Win 32
    Par SkYsO dans le forum Delphi .NET
    Réponses: 6
    Dernier message: 07/11/2005, 14h28
  2. [info] [réseau] Lancer une appli distante et récupérer i/o
    Par legzo dans le forum Entrée/Sortie
    Réponses: 16
    Dernier message: 29/06/2005, 13h48
  3. Lancer une apply a la fermeture du lecteur cdrom
    Par jean-jacques varvenne dans le forum Administration système
    Réponses: 2
    Dernier message: 19/06/2005, 22h04
  4. [PHP-JS] comment lancer une fonction javascript a partir de php
    Par amika dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 06/06/2005, 19h23
  5. lancer une appli a travers une autre appli
    Par tazamorte dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/04/2004, 11h08

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