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 :

Passage d'un code AutoIt vers Delphi (pour une dll MMB)


Sujet :

API, COM et SDKs Delphi

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Passage d'un code AutoIt vers Delphi (pour une dll MMB)
    Bonjour à tous,

    Je cherche à transformer ce code AutoIt en Code Dephi via MMB Plugin Builder mais sans aucun succès

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $cmd       = CHR(34)& "ping.exe 10.0.0.123" &CHR(34)
    ;
    Local $Stream = Run(@ComSpec & ' /c "' & $cmd & '"', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDIN_CHILD + $STDOUT_CHILD)
    ;
    While 1
      $line = StdoutRead($Stream)
      If @error Then
        $SetStr = 'Done'
        ExitLoop
      Else
      If $line <> '' Then
        $SetStr = $line
      EndIf
    EndIf
    GetStr est ma ligne de commande ($cmd)
    "ping.exe 10.0.0.123"

    SetStr pour le retour du contenu de CMD ($Send)
    Envoi d'une requête 'Ping' 10.0.0.123 avec 32 octets de données :
    Délai d'attente de la demande dépassé. etc...


    J'ai bien réussi à lancer le ping mais pour en récupérer le contenu comme AutoIt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    begin
      ShellExecute(0, nil, 'cmd', PChar('/C "'+GetStr+'"'),nil,SW_SHOW);
      //ShellExecute(0,'Open',PChar('/C "'+GetStr+'"'),nil,nil,SW_SHOW);
      SetStr:='Done'; 
    end;
    J'ai bien cherché dans des tutos mais je nage complètement

    Merci d'avance pour votre aide

  2. #2
    Membre habitué
    Inscrit en
    Juillet 2007
    Messages
    113
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Juillet 2007
    Messages : 113
    Points : 170
    Points
    170

  3. #3
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 856
    Points : 11 290
    Points
    11 290
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    Tu pourras trouver une piste ici, et il ne faut pas oublier la simple redirection : 'ping.exe 10.0.0.123 >result.txt' qui devrait te fournir un fichier de sortie à exploiter.
    Sinon, regarde du côté des Pipe, mais c'est certainement beaucoup plus complexe !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  4. #4
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Bonjour,
    Tu pourras trouver une piste ici
    Intéressant mais une usine à gaz

    Citation Envoyé par tourlourou Voir le message
    Il ne faut pas oublier la simple redirection : 'ping.exe 10.0.0.123 >result.txt' qui devrait te fournir un fichier de sortie à exploiter.
    J'y avais pensé mais valable dans le cas d'un PING par contre un flux comme mplayer çà fait trop de données à traiter

    Citation Envoyé par tourlourou Voir le message
    Sinon, regarde du côté des Pipe, mais c'est certainement beaucoup plus complexe !
    Là çà serai parfait, tellement parfait que ce sujet serai résolu, ahhhhh si c'estait vrai je pourai redonner vie à un programme de développement: Multi Media Builder (MMB)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par tourlourou Voir le message
    Bonjour,
    Tu pourras trouver une piste ici
    Voilà j'ai bien regardé mais le code à l'air de passer par un fichier temporaire et alourdir un long processus genre (mplayer, x264, etc...)


    J'ai trouvé sur cette page ou l'on parle de stdcall mais je ne trouve aucun exemple => Lien de la rubrique sur stdcall Redirection console
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    uses
      ShellApi;
    begin
      function ShellExecute(hWnd: HWND; Operation, FileName, Parameters,Directory: PChar; ShowCmd: Integer): HINST; stdcall;
    end

  6. #6
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Bonjour,
    Citation Envoyé par Frencher Voir le message
    Voilà j'ai bien regardé mais le code à l'air de passer par un fichier temporaire et alourdir un long processus genre (mplayer, x264, etc...)
    Vouloir rediriger les entrées sorties d'une application console est un bon moyen d'alourdir le processus.
    Si vous voulez "pinguer" une machine (un site, un PC) pour s'assurer de sa disponibilité, le plus simple est de suivre le conseil donné par @tenpigs
    Citation Envoyé par tenpigs Voir le message
    Ainsi, en gérant le ping en interne vous ne serez plus dépendant d'un programme tiers qui pourrait ne pas être disponible ou accessible...
    Philippe.

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Je vous remerci de vous intéresser à mon sujet et me faire avancer son dévellopement

    Le PING est un exemple, c'est juste histoire de récupérer les "pipe"
    J'avais fait une demo il y à quelque temps c'était pour AutoIt mais il se trouve que certains plantages se produisent avec d'autres composantes ou plugins de MMB d'où l'idée de créer cette dll en passant par delphi

    Télécharger la demo utilisant AutoIt via "Send.exe" pour être remplacé par une dll en code delphi

    Pour voir le principe:
    1-Décomprésser complètement l'archive dans un dossier
    2-Executer "Lancez-moi.exe"
    3-Cliquer sur le bouton "Stop Verbose = 0" il doit être sur =1
    4-Cliquer sur le bouton "mplayer" puis valider le message par "OK"
    5-Cliquer maintenant sur le bouton "SEND"

    On peut voir en temp réel ce qui se passe dans mplayer sans passer par un fichier temps lourd et volumineux.


  8. #8
    Expert confirmé
    Avatar de Ph. B.
    Homme Profil pro
    Freelance
    Inscrit en
    Avril 2002
    Messages
    1 784
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Haute Garonne (Midi Pyrénées)

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 784
    Points : 5 915
    Points
    5 915
    Par défaut
    Citation Envoyé par Frencher Voir le message
    Le PING est un exemple, c'est juste histoire de récupérer les "pipe"
    Dans ce cas, il faut lancer le programme tiers via CreateProcess, capturer les flux d'entrée, de sortie et d'erreur...
    Citation Envoyé par Frencher Voir le message
    Télécharger la demo...
    Je préfère un mini projet de test plutôt qu'un exécutable, mais je suis un peu parano...

    Enfin pour gérer les "pipes", il y a quelques années, Michael Brown avait fourni un code de base très utile mais qui nécessite quelques ajouts (il ne gère que StdOut, mais StdIn et StdErr sont déjà implémentés)
    Voici le lien : Capturing stdin/stdout for called processes

    J'avais juste modifié l'appel à CreateProcess en modifiant l'ordre des 2 premiers paramètres CreateProcess(nil, PChar(FileName), nil, nil, True, //....
    Philippe.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    OK merci bien pour cette réponse rapide, j'ai rien compris lol mais bon je vais demander de l'aide

Discussions similaires

  1. Compatibilité C et Delphi pour une DLL
    Par Dragnard dans le forum Langage
    Réponses: 15
    Dernier message: 25/12/2012, 22h49
  2. problème de syntaxe delphi pour une requête sql
    Par socooooool dans le forum Bases de données
    Réponses: 12
    Dernier message: 07/07/2006, 16h53
  3. Garder Oracle ou migrer vers MySQL pour une aplication Web ?
    Par Invité dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 27/06/2006, 11h22
  4. Code VB6 vers Delphi ?
    Par isachat666 dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2006, 15h07
  5. Réponses: 2
    Dernier message: 18/10/2003, 14h42

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