Page 1 sur 1
[..] Automatiser Flash et utiliser des logiciels en m temps
Posté : sam. 13 sept. 2008 18:18
par 3akycka
C'est mon premier message alors bonjour à tous et merci à tous ceux qui font que Autoit existe !
J'ai fait ce petit script qui permet, quand il y a des fichiers Flash8.fla dans un dossier de les ouvrirs avec Flash CS3 et de publier un fichierCS3.swf dans un autre dossier. Ceci en verifiant en permanence si il y a des nouveaux fichier dans le dossier.
En gros le but est d'automatiser qq actions dans Flash.
Mon script marche mais le problème c'est que je ne peux pas utiliser d'autre logiciels pendant que Flash s'occupe de faire ça. "@SW_MINIMIZE" n'as pas l'air de faire d'effet.
Je voudrais que Flash soit presque invisible. Est-ce qu'il y aurait une solution pour cela ?
Merci si vous pouvez m'aider là-dessus
► Afficher le texte
Code : Tout sélectionner
#include <File.au3>
#include <Array.au3>
#include <Misc.au3>
Run("C:\Program Files\Adobe\Adobe Flash CS3\Flash.exe", "", @SW_MINIMIZE)
While 1 = 1
$FileList = _FileListToArray("C:\Documents and Settings\--\Bureau\Fichier_F8")
If $FileList = "" Then
Sleep(1000)
Else
$File = StringLeft($FileList[1], StringLen($FileList[1]) - 4)
WinWait("[CLASS:Flash9]")
ControlSend("[CLASS:Flash9]", "", "", "^o")
WinWait("Ouvrir")
ControlCommand("Ouvrir", "", "Edit1", "EditPaste", "C:\Documents and Settings\--\Bureau\Fichier_F8\" & $FileList[1])
ControlSend("Ouvrir", "", "", "{ENTER}")
WinWait("[CLASS:Flash9]")
ControlSend("[CLASS:Flash9]", "", "", "^+{F12}")
WinWait("Paramètres de publication")
ControlClick("Paramètres de publication", "", "Button1")
ControlSend("Paramètres de publication", "", "", "i")
WinWait("Importer un profil")
ControlSend("Importer un profil", "", "", "UnProfil")
ControlSend("Importer un profil", "", "", "{ENTER}")
If ControlCommand("Paramètres de publication", "", "SysTabControl321", "CurrentTab", "") == 2 Then
ControlCommand("Paramètres de publication", "", "SysTabControl321", "TabLeft")
EndIf
WinWait("Paramètres de publication")
ControlClick("Paramètres de publication", "", "Edit1", "left", 2)
ControlCommand("Paramètres de publication", "", "Edit1", "EditPaste", "C:\Documents and Settings\--\Bureau\Fichiers_SWF_CS3\" & $FileList[1])
ControlSend("Paramètres de publication", "", "", "{ENTER}")
WinWait("[CLASS:Flash9]")
ControlSend("[CLASS:Flash9]", "", "", "+{F12}");Send("+{F12}")
WinWait("[CLASS:Flash9]")
ControlSend("[CLASS:Flash9]", "", "", "^w")
ControlSend("[CLASS:Flash9]", "", "", "!n")
Sleep(1000)
FileDelete("C:\Documents and Settings\--\Bureau\Fichier_F8\" & $FileList[1])
EndIf
WEnd
Re: [..] automatiser Flash et utiliser des logiciels en m temps
Posté : lun. 15 sept. 2008 21:39
par terminatorn
Si j'ai bien compris voici ma réponse :
Il est normale que il peut pas vérifier cela car si il les vérifie il les modifie hors si un autre logiciel les utilise il ne peut pas car chez windows un fichier ne peut être utilisé UNE SEUL fois en temps réel voila désolé de te l'apprendre
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : lun. 15 sept. 2008 22:46
par Tlem
Heuuu j'ai pas tout compris à la réponse de terminatorn, mais voici mon explication :
Vous lancez une application en mode réduit, mais vous la pilotez 'graphiquement' or Windows ne peut gérer qu'une seule utilisation graphique en même temps.
Essayez de voir si Flash.exe peut être scripté pour faire le résultat que vous attendez.
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : mar. 16 sept. 2008 14:25
par 3akycka
Bon, bin c'est bien dommage !
Si j'ai bien réussi à déchiffrer la réponse de terminatorn, il me semble qu'il ne s'agissait pas de mon problème, car tu semble dire que le problème est qu'on ne peut pas utiliser 2 fois le même fichier en même, hors ce n'est pas ce que je veux faire.
Par contre si tu dit Tlem qu'on ne peut pas piloter 2 applications graphiquement en même tps il n'y aura donc pas de solutions

...
J'ai vu sur différents sites qu'on pouvait piloter les dll des programmes, est-ce que ça pourrait être une possibilité pour faire ce que je veux ?
C'est à dire ne pas piloter "graphiquement" le logiciel mais plutôt "directement"
merci tt de même à tous les deux !
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : mar. 16 sept. 2008 21:45
par Tlem
3akycka a écrit :Par contre si tu dit Tlem qu'on ne peut pas piloter 2 applications graphiquement en même tps
Ce ne sont pas tout à fait mes propos ...
Vous pouvez tout à fait piloter
séquentiellement un certains nombre d'applications réduites ou non.
Du moment ou vous connaissez les identifiants des fenêtres, et ID des contrôles, tout est possible.
Par contre comme je l'ai dit ce sera
séquentiel et donc pendent que AutoIt fait une action, vous ne pouvez en faire une autre avec votre clavier et votre souris ...
3akycka a écrit :J'ai vu sur différents sites qu'on pouvait piloter les dll des programmes, est-ce que ça pourrait être une possibilité pour faire ce que je veux ?
C'est à dire ne pas piloter "graphiquement" le logiciel mais plutôt "directement"
C'est ce dont je vous parlais lorsque j'ai dit scripter l'exécutable.
Le choix de la dll me semble très bien aussi, mais là il va falloir aller plus loin dans la recherche, car une dll ce n'est pas comme un exe, c'est beaucoup plus complexe et sensible.
Déjà il va falloir savoir quelle dll utiliser et connaitre le paramétrage des fonctions qu'elle intègre (et ça beaucoup d'éditeur ne le diffuse pas).
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : mer. 17 sept. 2008 11:29
par 3akycka
Tlem a écrit :Ce ne sont pas tout à fait mes propos ...
Vous pouvez tout à fait piloter séquentiellement un certains nombre d'applications réduites ou non.
Du moment ou vous connaissez les identifiants des fenêtres, et ID des contrôles, tout est possible.
Par contre comme je l'ai dit ce sera séquentiel et donc pendent que AutoIt fait une action, vous ne pouvez en faire une autre avec votre clavier et votre souris ...
Je l'avais compris comme ça.
Tlem a écrit :C'est ce dont je vous parlais lorsque j'ai dit scripter l'exécutable.
Pourrais tu me donner des précisions sur quel type de scripts sont employés pour faire cela ?.
Est-ce que tu parle des scripts internes aux applications, par exemple ceux de Photoshop qui permet d'automatiser une serie d'actions (ouvrir, enregistrer...) ou bien existe-t-il dans Autoit des methodes pour scripter directement les applications ? ou une autre solution ?
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : mer. 17 sept. 2008 21:55
par Tlem
Ce que je veut dire, c'est que certaines applications peuvent prendre plusieurs arguments pour réaliser une action sans pour autant utiliser une interface graphique.
D'autre utilisent un fichier de réponse pour les actions à réalisées.
Je prend pour exemple, un programme de sauvegarde qui peut ce gérer graphiquement, ou que l'on peut lancer avec un fichier X en argument dans lequel les paramètres de la sauvegarde ont été déjà remplis.
Certains programmes de conversion graphique fonctionnent sur ce principe.
Peut être que Flash.exe peut incorporer ce genre de fonctionnement.
Sinon après c'est à partir des dll, mais là c'est un autre histoire ...
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : jeu. 18 sept. 2008 19:30
par SagePourpre
Je ne comprends pas une chose... Les fichiers *.fla, ils viennent de où ? ... Parce que personnellement, tous les fichiers *.fla susceptibles d'êtres sur mon pc, je les ai crées moi-même. Et s'il va de même pour toi, une fois que tu as fini de travailler avec un fichier *.fla, avant de quitter le logiciel, il n'y a qu'à appuyer sur Ctrl+Enter pour générer un fichier *.swf automatiquement à partir du *.fla (il est crée ds le même dossier que le *.fla mais si ça cause un problème alors à ce moment là, il suffirait simplement de créer un "laucher" pour flash qui se lancerait automatiquement avec flash et que dès qu'il trouve un *.swf dans le dossier ou vous enregistrer vos projets, il le déplace dans un autre dossier.)
De plus, en procédant ainsi, la mémoire vive est grandement libérée (comparativement à laisser flash minimisé en permanence. )
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : jeu. 18 sept. 2008 21:27
par 3akycka
@SagePourpre
Les fichiers flash viennent de différent ordinateurs sur un réseau, ces ordinateur sont équipés de flash 8.
Un seul ordinateur est équipé de Flash CS3 et sert à faire la conversion en fichiers swf/sc3 pour que tous les utilisateurs des autres ordinateurs puissent programmer ensuite en action script 3 avec flash develop...
Le but serait d'automatiser cela pour que ça devienne plus souple, mais il faut que l'ordinateur équipé de CS3 puisse être utilisé pour d'autres chose en même temps.
@Tlem
J'ai fait une recherche mais je ne trouve rien qui ressemble à la technique que tu propose, est-ce que tu aurais qq liens vers des exemples de scripts marchant sur ce principe pour que je puisse faire des essais ?
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : ven. 19 sept. 2008 02:29
par Tlem
3akycka a écrit :est-ce que tu aurais qq liens vers des exemples de scripts marchant sur ce principe pour que je puisse faire des essais ?
Absolument aucun.
J'ai jeté cette idée générale au cas ou ce serait possible mais je n'ai aucun élément à fournir car je n'utilise pas Flash.exe ni même quelque chose de similaire.
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : ven. 19 sept. 2008 03:45
par SagePourpre
Sinon comme tlem l'a suggéré, la méthode séquentielle pourrait fonctionner si le désagrément n'est pas trop grand pour toi.
C'est-à-dire que si un nouveau *.fla est détecté, tu n'as qu'à utiliser
ta boucle qui fait le _filelisttoarray()
et qui attends un nouveau *.fla
$gui = guicreate("...",200,50,-1,-1)
conversion du fichier *.fla avec ton script
guidelete($gui)
En gros, jamais un *.fla est détecté, une gui est crée
seulement pour que tu saches que ton clavier/souris sera bloqué l'espace
d'une seconde pendant que le *.fla se convertit et disparait une fois que le
clavier/souris est libéré.
Le seul désagrément est que, pendant que le script de conversion de fichier s'exécute, tu perds l'accès à ton clavier/souris.
Ce n'est pas la méthode transparente que tu souhaites mais c'est la plus proche que je crois possible avec autoit.
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : ven. 19 sept. 2008 10:33
par Tlem
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : lun. 22 sept. 2008 13:46
par 3akycka
@Tlem
Il n'y a pas l'air d'y avoir ce que je cherche, mais merci les liens !
@SagePourpre
En effet avec Blockinput ça deviendrait déja plus utlilisable, quite à avoir à attendre de temps en temps
Mais ce qui reste quand même assez genant c'est que je n'arrive pas à minimiser les fenetres de flash, dès qu'une fenetre est lancée dans flash via autoit, elle apparait à l'écran.
Est-ce qu'il y aurait qd même une solution pour éviter cela ?
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : lun. 22 sept. 2008 20:50
par Tlem
Votre machine est-elle puissante ?
Dans l'affirmative, pourquoi ne pas tout simplement créer une machine virtuelle avec Virtual PC ou VirtualBox (outils gratuits).
Dans ce cas précis, vous pourriez faire le script que vous voulez en connectant un répertoire réseau vers vos fichiers à transformer, tout en restant maître de la machine principale.
Bon il est vrai que pour ce faire il faut au moins 1 à 2 Go de Ram, un Core2Duo ou un Quad Core et Windows XP.
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : mar. 23 sept. 2008 11:11
par 3akycka
Je ne dispose que d'ordinateurs moyennement puissants.
En tout cas merci pour l'idée !
Pourquoi le faite de mettre une machine virtuelle demanderais un ordinateur si puissant ?
ps: Si il n'y as vraiment rien à faire pour reduire ce ******** Flash, ce que je n'espère pas, il me resterait peut-être une dernière solution qui serait d'acheter un tout petit écran (1 pouce si ça existe

) et de le mettre en 2ème écran avec flash dessus

Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : mar. 23 sept. 2008 21:15
par Tlem
3akycka a écrit :Pourquoi le faite de mettre une machine virtuelle demanderais un ordinateur si puissant ?
Ben, pour faire tourner un Windows XP dans un Windows XP, il faut un minimum de mémoire. En sachant que pour un XP SP3 il faut au moins 512 Mo pour être à peut prés à l'aise, et 256 Mo pour un XP SP1. Donc ca nous fait 772 Mo que l'on peut arrondir à 1Go.
En ce qui concerne la puissance CPU, pour faire fonctionner la machine virtuel sans trop ralentir votre XP principal un Core2Duo me semble un minimum.
Pour ma part j'utilise VirtualPC sur un portable IBM R60 avec 1Go de ram et un Core2Duo 1,6 Ghz (mais la plupart du temps il tourne à 980 Mhz) et ça ne tourne pas trop mal pour faire quelques tests de scripts sur divers OS).
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : mer. 24 sept. 2008 22:03
par timmalos
Avec les avancées que font les virtualisations en ce moment, peut etre qu'attendre quelques mois permettront de resoudre les problemes de puissance.
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : mer. 24 sept. 2008 22:27
par SagePourpre
Voilà ... dit-moi ce que t'en penses ?
Et surtout si ça fonctionne correctement sur ta machine.
Il fait en gros ce que tu voulais... en appliquant un Blockinput
pour que tu ne puisses pas interférer avec le script quand il convertit un *.fla.
Chez moi ça fonctionne parfaitement.
Le Sage Pourpre
► Afficher le texteCode
Code : Tout sélectionner
#include<file.au3>
#include<array.au3>
Opt("WinWaitDelay", 0)
Opt("WinTitleMatchMode", 3)
$adobe = "Adobe Flash CS3 Professional"
$start = 0
While 1
$fla = _FileListToArray(@ScriptDir, "*.fla", 1)
If @error = 4 Then
Dim $fla[1]
$fla[0] = 0
EndIf
If Not ProcessExists("Flash.exe") Then
$flash = Run("M:\Program Files\Adobe\Adobe Flash CS3\Flash.exe")
ProcessWait($flash)
WinWaitActive($adobe, "")
Send("{F4}")
$handle = WinGetHandle($adobe, "")
WinSetTrans($handle, "", 0)
WinSetState($handle, "", @SW_HIDE)
EndIf
If $fla[0] > 0 Then
BlockInput(1)
For $I = 1 To $fla[0]
$nom = StringTrimRight($fla[$I], 4)
ShellExecute($fla[$I])
WinWait($adobe & " - [" & $fla[$I] & "]")
Sleep(300)
Send("^{Enter}")
WinWait($nom & ".swf", "")
Send("^w")
WinWaitActive($adobe & " - [" & $fla[$I] & "]")
Send("^w")
Next
Sleep(1000)
For $I = 1 To $fla[0]
FileDelete(@ScriptDir & "\" & $fla[$I])
Next
WinSetState($handle, "", @SW_HIDE)
BlockInput(0)
EndIf
Sleep(1000)
If $start = 0 Then
WinSetState($handle, "", @SW_HIDE)
$start = 1
EndIf
WEnd
Func OnAutoItExit()
If ProcessExists("flash.exe") Then
ProcessClose("flash.exe")
EndIf
EndFunc ;==>OnAutoItExit
Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : sam. 04 oct. 2008 08:23
par 3akycka
Salut,
Merci pour vos conseils !
Désolé de répondre si tardivement, je n'avais pas accès à internet ces derniers temps.
Sage Pourpre, c'est vraiment gentil d'avoir fait ce script !
J'ai essayé vite fait mais il plante après l'ouverture du 1er fichier dans flash, la curseur de la souris se fige et plus rien ne se passe... je n'ai pas eu le temps de regarder ça plus en détail, je le ferais dès que je peux...
a+

Re: [..] Automatiser Flash et utiliser des logiciels en m temps
Posté : sam. 04 oct. 2008 08:32
par SagePourpre
hmmm...
Rajoute au début du script
opt("TrayIconDebug",1)
et rajoute un point-virgule devant le block input(1) pour que le clavier/souris
ne bloque pas afin d'être en mesure de pouvoir vérifier où le script bloque (il suffit
alors de passer au-dessu de l'icône d'autoit dans la barre des tâches)
Comme ça ça devrait te permettre de trouver aisément le problème.
(Chez moi, le script fonctionnait parfaitement)