Page 1 sur 1

[R] Intégrer un programme à mon programme

Posté : lun. 29 juil. 2013 19:42
par Faco
Bonjour bonjour,

Première fois sur aide d'autoit, soyez indulgent.

La question est simple, est ce que je peux intégrer un programme directement dans l’exécutable générer par autoit.

Plus précisément, je voudrai utiliser clip.exe (petit programme windows qui permet de mettre la réponse à une commande dos dans le presse papier, exemple : dir | clip). Le programme clip.exe n'est pas présent de base dans xp.

Donc je voudrai savoir si je peux l'incorporer à mon exe où si je suis obliger de le copier sur l'ordi cible.

Merci

Faco

Re: [..] Intégrer un programme à mon programme

Posté : lun. 29 juil. 2013 19:58
par jchd
FileInstall() fait ce genre de choses.

Re: [..] Intégrer un programme à mon programme

Posté : mar. 30 juil. 2013 00:47
par mikell
Cela dit ce genre de fonctionnalité (presse-papiers) peut être géré directement par autoit Image

Re: [..] Intégrer un programme à mon programme

Posté : mar. 30 juil. 2013 08:38
par Tlem
Basé sur le code de _RunDos(), voici une fonction AutoIt qui fait l'équivalent de clip.exe :

Code : Tout sélectionner

_RunClip("Dir") ; Lance la commande à récupérer dans le presse papier.

; Pour la demo :
ShellExecute("notepad.exe") ; Lance le bloc-notes.
Sleep(1500) ; Attends 1,5 seconde.
Send("^v") ; Copie le contenu du presse papier.



Func _RunClip($sCommand)
    Local $TmpFile = @TempDir & '\clip.tmp'
    Local $sResult = ""
    RunWait(@ComSpec & " /C " & $sCommand & '>"' & $TmpFile & '"' , "", @SW_HIDE)

    If FileExists($TmpFile) Then
        $sResult = FileRead($TmpFile)
        FileDelete($TmpFile)
    EndIf

    ClipPut ($sResult)
    Return SetError(@error, @extended, $sResult)
EndFunc   ;==>_RunClip

Re: [..] Intégrer un programme à mon programme

Posté : mar. 30 juil. 2013 13:18
par Faco
Merci tous le monde,

Jchd : c'est pas le but rechercher, je voudrai justement ne pas avoir à le copier, mais merci

Tlem : Tricheur !!! ;) Mais d'accord ça fait le boulot. je garde ton _RunCLip. Merci :)



Donc j'ai la solution pour mon bout de code mais j'en conclu quand même que je ne peux pas faire une sorte de package avec un exe que j’appellerai dans mon script.


Merci Tous

Faco

Re: [..] Intégrer un programme à mon programme

Posté : mar. 30 juil. 2013 23:19
par Tlem
Bonsoir.
Comme l'a dit jchd, FileInstall() fait le boulot.

Lors de la compilation, le programme/fichier indiqué par FileInstall() sera automatiquement intégré "aux ressources" du script. Cette ligne placée judicieusement permet lors du lancement du script d'extraire le programme/fichier dans le répertoire indiqué et donc il sera disponible à l'utilisation.

Exemple :

Code : Tout sélectionner

; Le programme clip.exe doit être dans le même répertoire que le script lors de la compilation.
FileInstall("clip.exe", @TempDir)

$CommandeDOS = "Dir"
Run(@ComSpec & " /c " & $CommandeDOS & ' | "' & @TempDir & '\clip.exe"', "", @SW_HIDE)
Après, si le fait qu'un exécutable soit "décompressé" pour utilisation ne vous convient pas, il est possible d'intégré le programme d'une autre manière et de lancer son code sans faire d'extraction, mais franchement ma solution (celle du tricheur) sera bien plus rapide et pratique. ;)

Re: [..] Intégrer un programme à mon programme

Posté : mer. 31 juil. 2013 00:18
par Faco
Et ba, j'avais mal lu l'aide. effectivement ça peux être intéressent.
Je ne l'utiliserai pas là vu que tu m'a donné une autre solution Tlem mais je garde ça en tête.

je serai aussi intéresser pour ce que tu as dit à la fin de ton message :
► Afficher le texte
Ne prend pas trop de temps pour me faire du code, si tu m'aiguille sur les bonnes fonctions ça me suffit.

Merci :D

Re: [..] Intégrer un programme à mon programme

Posté : mer. 31 juil. 2013 07:42
par Tlem
Le lancement de code à la volée à été abordé plusieurs fois sur ce forum, mais il me semble que la solution est sur le forum US.
Comme je l'ai dit, il implique un code plus complexe et je ne suis pas sur de la pérennité d'un tel procédé aux vues des AV et de l'évolution du code AutoIt. ^^

Rien ne vous empêche tout comme un tas d'autres programmes d'embarquer en tant que ressource un programme libre (votre script et à coté le programme clip.exe). InnoSetup vous permettra de faire un installateur qui fera tout ce qu'il faut (raccourcis, clé de registre, dossier d'install, etc ...). ;)

Re: [..] Intégrer un programme à mon programme

Posté : mer. 31 juil. 2013 11:52
par jchd
Pour info et au passage, la prochaine version stable aura une structure PE "normale". Voir les discussions concernant les betas en cours.