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

Delphi Discussion :

Lancer un exécutable et récupérer des paramètres


Sujet :

Delphi

  1. #1
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut Lancer un exécutable et récupérer des paramètres
    Bonjour à tous,

    Je souhaite créer un avtiveX avec sur la fiche un bouton pour lancer un exécutable, là pas de problème (shellExecute), mon soucis est que l'application que je dois lancer retourne un paramètre de type numérique que je dois récupérer.

    Comment dois-je faire pour récupérer des paramètres d'une application que je viens de lancer?

    Merci à tous pour votre aide.

  2. #2
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    il te renvoi une valeur num à l'ouverture? ou n'importe quand?

  3. #3
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    A la fermeture.

  4. #4
    Membre habitué Avatar de Ludo_360
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    295
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 295
    Points : 191
    Points
    191
    Par défaut
    L'application qui te renvoi un entier, c'est toi qui l'a créée? Tu pourrais mémoriser la valeur entière dans un fichier .ini.. nan?

  5. #5
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Non ce n'est pas moi qui l'ai créé c'est pour cette raison que je dois trouver une solution pour récupérer le retour de l'application.

    En PHP il existe une fonction system() qui permet de le faire.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 553
    Points : 25 133
    Points
    25 133
    Par défaut
    Sinon voir si un PostMessage est possible, l'activeX sur la ligne de commande fourni son Handle de Fenêtre, et lorsque le programme se ferme, un Message Personnalisé (voir RegisterWindowMessage) est envoyé à ce handle ... biensur nos idées impliquent que tu puisses modifier ce programme ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Pour faire au plus simple (si pas trop de contraintes de fonctionnement "parfait" n cas d'accès concurrents), on pourra utiliser un fichier texte pour transférer le résultat.
    Mechanisme :
    - effacement du fichier texte par le pgm appelant,
    - lancement de l'appli externe,
    - test de l'existence du fichier de retour par le pgm appelant (prévoir éventuellement erreur sur temps dépassé),
    - écriture du fichier texte par l'appli externe,
    - lecture du fichier texte par le pgm appelant
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    oulah pour autant que je sache, vous n'y êtes pas du tout

    Premièrement voici un exemple de programme qui retourne une valeur entière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    program ExitCode;
    begin
     Halt(1234);
    end.
    maintenant, voici le code pour retrouver la valeur 1234

    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
     
    program GetExit;
    {$APPTYPE CONSOLE}
    uses
     Windows;
     
    var
     si:TStartupInfo;
     pi:TProcessInformation;
     ex:cardinal;
    begin
     FillChar(si,SizeOf(si),0);
     si.cb:=SizeOf(si);
     if CreateProcess('ExitCode.exe',nil,nil,nil,False,0,nil,nil,si,pi) then begin
      WaitForSingleObject(pi.hProcess,INFINITE);
      if GetExitCodeProcess(pi.hProcess,ex) then WriteLn('ExitCode=',ex);
     end;
     ReadLn;
    end.
    NB: j'ai laissé de côté tous les cas d'erreur, ExitCode doit être compilé et placé dans le même répertoire que GetExit.

    ShellExecute c'est bien, mais ça ne donne aucune information sur le process lancé.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  9. #9
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 553
    Points : 25 133
    Points
    25 133
    Par défaut
    le Halt n'est pas une fonction de routeur d'erreur pour la console ?

    Et je vous rappelle ceci

    Non ce n'est pas moi qui l'ai créé c'est pour cette raison que je dois trouver une solution pour récupérer le retour de l'application.
    thierrybatlle, n'a pas créé l'executable, donc il ne peut pas le modifier ... à toi de voir si GetExitCodeProcess fonctionne, si ce n'est pas le cas, c'est que ce programme ne renvoit rien, donc tu ne pourras pas faire ce que tu veux ... pourquoi ne pas consulter l'auteur du programme ou au moins une documentation ?

    En fin, si c'est un programme console, s'il affiche un truc à l'écran tu peux lancer comme ceci "PROG param > Sortie.txt"
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par ShaiLeTroll
    le Halt n'est pas une fonction de routeur d'erreur pour la console ?
    non, c'est la fonction de sortie de programme qui peut retourner l'ExitCode du process tel qu'il peut être lu par GetExitCodeProcess

    c'est ce qu'on retrouve dans les .BAT avec le ERRORLEVEL, et ça n'est en rien limité aux applications console.

    Citation Envoyé par ShaiLeTroll
    Et je vous rappelle ceci


    thierrybatlle, n'a pas créé l'executable, donc il ne peut pas le modifier ... à toi de voir si GetExitCodeProcess fonctionne, si ce n'est pas le cas, c'est que ce programme ne renvoit rien, donc tu ne pourras pas faire ce que tu veux ... pourquoi ne pas consulter l'auteur du programme ou au moins une documentation ?

    En fin, si c'est un programme console, s'il affiche un truc à l'écran tu peux lancer comme ceci "PROG param > Sortie.txt"
    c'est bien pour cela que je pense qu'il est question d'ExitCode, car je ne vois pas ce que pourrait être d'autre : "l'application que je dois lancer retourne un paramètre de type numérique"
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  11. #11
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Bonjour,

    Je vous montre mon bout de code :
    <code>
    procedure TForm1.Button1Click(Sender: TObject);
    const
    pathAppli = 'c:\electrocoup\F3005.exe FILE="c:\lectureCartes\test.txt" AUTOEXIT';
    var
    si : TStartupInfo;
    pi : TProcessInformation;
    ex : cardinal;
    begin

    FillChar(si,sizeof(si),0);
    si.cb := sizeof(si);
    if CreateProcess(pathAppli,nil,nil,nil,false,0,nil,nil,si,pi) then
    begin
    WaitForSingleObject(pi.hProcess,infinite);
    if GetExitCodeProcess(pi.hProcess,ex) then
    Writeln('Valeur de retour = ',ex);
    end;
    //Readln;
    end;
    </code>

    Je n'arrive pas à lancer mon application avec ses paramètres.
    Si j'enlève les paramètres pas de soucis.
    Le paramètre FILE me permet de lui indiquer où il doit m'écrire un fichier texte avec des données et le dernier lui indique de ce fermer automatiquement et c'est là que je récupère la valeur (1,2,3 ou 4)
    Comment dois-je m'y prendre ?

    Merci beaucoup.

  12. #12
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    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
    procedure TForm1.Button1Click(Sender: TObject);
    const
        pathAppli = 'c:\electrocoup\F3005.exe FILE="c:\lectureCartes\test.txt" AUTOEXIT';
    var
        si : TStartupInfo;
        pi : TProcessInformation;
        ex : cardinal;
    begin
     
      FillChar(si,sizeof(si),0);
      si.cb := sizeof(si);
      if CreateProcess(pathAppli,nil,nil,nil,false,0,nil,nil,si,pi) then
      begin
         WaitForSingleObject(pi.hProcess,infinite);
         if GetExitCodeProcess(pi.hProcess,ex) then
          Writeln('Valeur de retour = ',ex);
      end;
      //Readln;
    end;

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

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par thierrybatlle
    Bonjour,

    Je vous montre mon bout de code :
    ça serait pas mal de regarder l'aide en ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    function CreateProcess(lpApplicationName: PChar; lpCommandLine: PChar;
      lpProcessAttributes, lpThreadAttributes: PSecurityAttributes;
      bInheritHandles: BOOL; dwCreationFlags: DWORD; lpEnvironment: Pointer;
      lpCurrentDirectory: PChar; const lpStartupInfo: TStartupInfo;
      var lpProcessInformation: TProcessInformation): BOOL; stdcall;
    donc, à vu de nez

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    const
        pathAppli = 'c:\electrocoup\F3005.exe';
       AppliParms= 'FILE="c:\lectureCartes\test.txt" AUTOEXIT';
    ...
     CreateProcess(pathAppli,appliParms,nil,nil,false,0,nil,nil,si,pi)
    au besoin il faut aussi reprendre le lpCurrentDirectory (répertoire courant) et lpEnvironnment (variables d'environnement, dont le PATH)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  14. #14
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Je ne possède pas une grande expérience en Delphi, et je dois créer un activeX.
    Je ne lui demande qu'une chose c'est d'ouvrir un programme qui se charge de lire des données sur RS232 une fois la lecture terminée l'application m'affiche un fichier texte tous cela sans intervention de façon complètement automatique. Là je valide où pas et cette application me renvoie un chiffre. Et là mon activeX doit récupérer ce chiffre et appeller une page web avec ce chiffre en paramètre.

    Maintenant je lance bien l'application mais les paramètres ne sont pas pris en compte et de plus il ne me renvoie que 0 alors que ce chiffre n'existe pas dans les retours possibles.

    C'est une application assez urgente.

    Merci beaucoup pour votre aide.

  15. #15
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 553
    Points : 25 133
    Points
    25 133
    Par défaut
    Personnellement je fais ceci, le GetStartupInfo est souvent important ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    var
       StartupInfo: TStartupInfo;
       ProcessInfo: TProcessInformation;
    ...
       GetStartupInfo(StartupInfo);
       Result := CreateProcess(PChar(ExeName), PChar(sParams), nil, nil, True, 0, nil, PChar(ExtractFileDir(ExeName)), StartupInfo, ProcessInfo);
       if Result then
          WaitForSingleObject(ProcessInfo.hProcess, INFINITE);
    Maintenant, comme je le disais consulte la documentation technique de cet executable, ... as-tu essayé le lancer le programme par un fichier BAT ... ça pourrait aider, j'y fut obligé parfois ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  16. #16
    Membre actif Avatar de thierrybatlle
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2005
    Messages
    618
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2005
    Messages : 618
    Points : 222
    Points
    222
    Par défaut
    Oui, j'ai fait un script en php
    Code php : 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
    $pathAppli = "c:\\electrocoup\\F3005.exe /FILE=\"c:\\lectureCartes\\test.txt \" /AUTOEXIT";
    	system($pathAppli,$resultat);
     
     
     
    switch ($resultat) {
    	case 1:
    		echo("$resultat - Lecture des datas OK, on insère dans MySQL");
    		break;
    	case 2:
    		echo("$resultat - Carte illisible, affichage d'un message pas de traitement sur les datas");
    		break;
    	case 3:
    		echo("$resultat - Pas de validation par le user, affichage d'un message pas de traitementsur les datas");
    		break;
    	case 4:
    		echo("$resultat - Impossible de créer le fichier, affichage d'un message pas de traitementsur les datas");
    		break;
    }

    Et là en local cela fonctionne très bien.

  17. #17
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2006
    Messages
    624
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 624
    Points : 754
    Points
    754
    Par défaut
    On peut faire comme cela:

    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
    var
    ProcessInfo: TProcessInformation;
    StartUpInfo: TStartUpInfo;
     
        ---------
    FillChar(StartupInfo, SizeOf(TStartupInfo), 0);
    with StartupInfo do
    begin
    cb := SizeOf(TStartupInfo);
    dwFlags := STARTF_USESHOWWINDOW;
    wShowWindow := SW_SHOWNORMAL;
    end;
     
    CreateProcess('c:\path\prog.exe', nil, nil, nil, False,
    NORMAL_PRIORITY_CLASS, nil, nil, StartupInfo, ProcessInfo);
    ----------
     
    procedure TForm1.Button1Click(Sender: TObject);
    var ExitCode: DWORD; 
    begin
      ---------------
    GetExitCodeProcess(ProcessInfo.HProcess, ExitCode);
    ShowMessage('Code de sortie: ' + Inttostr(ExitCode);
    end;

  18. #18
    Candidat au Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut redirection de message vers ficchier
    Citation Envoyé par thierrybatlle Voir le message
    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
    procedure TForm1.Button1Click(Sender: TObject);
    const
        pathAppli = 'c:\electrocoup\F3005.exe FILE="c:\lectureCartes\test.txt" AUTOEXIT';
    var
        si : TStartupInfo;
        pi : TProcessInformation;
        ex : cardinal;
    begin
     
      FillChar(si,sizeof(si),0);
      si.cb := sizeof(si);
      if CreateProcess(pathAppli,nil,nil,nil,false,0,nil,nil,si,pi) then
      begin
         WaitForSingleObject(pi.hProcess,infinite);
         if GetExitCodeProcess(pi.hProcess,ex) then
          Writeln('Valeur de retour = ',ex);
      end;
      //Readln;
    end;
    //bonjour, je n'ai pas examiner votre code mais
    // pour beaucoup de fichier; il peut être util de recuperer la sortie console sur un fichier texte, la façon
    la plus simple serait la suivante:
    var fichier_de_sortie: string;
    begin
    fichier_de_sortie='MonFichierText.txt';

    shellExecut(0, 'open','c:\electrocoup\F3005.exe >'+ pchar(fichier_de_sortie), nil, SW_SHOW)

  19. #19
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    Merci de déterrer une discussion vieille de 13 ans pour proposer une solution ... qui n'en est pas une.
    Le ShellExecute n'attend pas la fin de l’exécution pour retourner, il y a donc peu de chance que le fichier existe ou soit à jour au retour de l'appel de cette fonction.

  20. #20
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Consultant informatique industrielle, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Consultant informatique industrielle, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 127
    Points : 5 809
    Points
    5 809
    Par défaut
    Citation Envoyé par thierrybatlle Voir le message
    Je ne possède pas une grande expérience en Delphi, et je dois créer un activeX.
    Je ne lui demande qu'une chose c'est d'ouvrir un programme qui se charge de lire des données sur RS232 une fois la lecture terminée l'application m'affiche un fichier texte tous cela sans intervention de façon complètement automatique. Là je valide où pas et cette application me renvoie un chiffre. Et là mon activeX doit récupérer ce chiffre et appeller une page web avec ce chiffre en paramètre.

    Maintenant je lance bien l'application mais les paramètres ne sont pas pris en compte et de plus il ne me renvoie que 0 alors que ce chiffre n'existe pas dans les retours possibles.

    C'est une application assez urgente.

    Merci beaucoup pour votre aide.
    1. Je ne comprend pas où intervient ton activeX dans cette systématique... Si tu créer un ActiveX il peut directement lire les données sur le port RS232 et te les renvoyer...

    2 .La valeur de retour 0 c'est la valeur de retour par défaut d'un exécutable (s'il n'y a pas d'erreur)... Est-tu sur que cet exécutable renvoi une valeur de retour différente de 0 lorsqu'il y a un problème, s'il n'arrive pas à lire les données par exemple)

    Un petit test avec un .BAT te donnera la réponse, si le contenu de la variable d'environnement %ERRORLEVEL% vaut toujours 0 c'est que ton exécutable ne renvoi pas de valeur de retour

    Dans un .BAT
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    c:\electrocoup\F3005.exe FILE="c:\lectureCartes\test.txt" AUTOEXIT
    echo %ERRORLEVEL%
    Et fait exécuter dans une commande DOS (cmd.exe)
    Si ça te renvoi 0 à chaque fois quel que soit le cas c'est que ton exécutable ne renvoi pas de valeur de retour

Discussions similaires

  1. récupérer des paramètres entre fenêtres
    Par thierrybatlle dans le forum WinDev
    Réponses: 2
    Dernier message: 13/07/2007, 19h10
  2. Réponses: 4
    Dernier message: 29/03/2007, 10h10
  3. récupérer des paramètres
    Par Alec6 dans le forum JSF
    Réponses: 2
    Dernier message: 16/01/2007, 09h26
  4. Réponses: 1
    Dernier message: 29/03/2006, 11h05
  5. Récupérer des paramètres HTML dans un ActiveX
    Par mr.saucisse dans le forum MFC
    Réponses: 26
    Dernier message: 02/02/2006, 16h25

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