[R] Intégrer un programme à mon programme

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Faco
Niveau 4
Niveau 4
Messages : 80
Enregistré le : lun. 29 juil. 2013 18:09
Status : Hors ligne

[R] Intégrer un programme à mon programme

#1

Message 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
Modifié en dernier par Faco le ven. 02 août 2013 16:19, modifié 1 fois.
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

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

#2

Message par jchd »

FileInstall() fait ce genre de choses.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

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

#3

Message par mikell »

Cela dit ce genre de fonctionnalité (presse-papiers) peut être géré directement par autoit Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#4

Message 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
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Faco
Niveau 4
Niveau 4
Messages : 80
Enregistré le : lun. 29 juil. 2013 18:09
Status : Hors ligne

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

#5

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#6

Message 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. ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Faco
Niveau 4
Niveau 4
Messages : 80
Enregistré le : lun. 29 juil. 2013 18:09
Status : Hors ligne

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

#7

Message 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
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

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

#8

Message 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 ...). ;)
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2284
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

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

#9

Message par jchd »

Pour info et au passage, la prochaine version stable aura une structure PE "normale". Voir les discussions concernant les betas en cours.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Répondre