Page 1 sur 1
[R] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 03:46
par yagonfstm91
Bonjour,
J'ai creer un navigateur internet en autoit qui affiche une page qui contient des images.
J'aimerais copier une de ces images dans le presse-papier mais sans a avoir a la re-télécharger (par ex en trouvant son url puis faire un inetget)
Voila ce que j'ai essayer mais qui ne marche pas :
Code : Tout sélectionner
$oImg = _IEImgGetCollection ($oIE, 2)
_IEAction ($oImg, "copy")
Connaîtriez vous une solution ?
Merci

Re: [...] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 11:19
par mikell
Pas possible avec cette méthode
Mais tu n'as pas à re-télécharger l'image, si IE te l'affiche alors elle est déjà dans tes Temporary Internet Files, suffit de la copier
Re: [...] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 11:26
par blacksoul305
Bordel, moi qui essaye depuis t'à l'heure à trouver un code qui marche...
J'vais essayer de suivre ta piste.
Re: [...] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 11:37
par mikell
On récupère l'image avec un InetGet avec option 0 qui va d'abord voir dans le cache

Re: [...] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 11:46
par blacksoul305
Bon, je poste mon code :
► Afficher le texte
Code : Tout sélectionner
#include <IE.au3>
#include <WindowsConstants.au3>
#include <GUIConstantsEx.au3>
#include <Misc.au3>
#include <Clipboard.au3>
Global $Form = GUICreate("Ma GUI")
Global $IE = _IECreateEmbedded()
GUICtrlCreateObj($IE,0,0,500,500)
GUISetState(@SW_SHOW)
Global $Form2 = GUICreate("Résultats")
Global $listview = GUICtrlCreateListView("Numéro de l'image|Nom de l'image|Téléchargée",0,0,300,500)
Global $btn = GUICtrlCreateButton("Télécharger",320,40)
GUISetState(@SW_HIDE)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btn
Exit
EndSwitch
If _IsPressed("70") Then
_Img()
ExitLoop
EndIf
Sleep(10)
WEnd
Func _Img()
Sleep(300)
_IENavigate($IE,"http://www.hebus.com/")
_IELoadWait($IE)
$imgCollection = _IEImgGetCollection($IE)
$numberImg = @extended ; on récupère le nombre d'images afin de créer la boucle
For $i = 0 To $numberImg ; pour l'image 0 à la dernière image
$imgCollection = _IEImgGetCollection($IE,$i) ; on récupère les propriétés de celle-ci
GUICtrlCreateListViewItem($i & "|" & $imgCollection.nameProp & "|Non",$listview) ; on créé les items de la list
Next
GUISetState(@SW_SHOW,$Form2)
EndFunc
J'ai bien quelque chose à la sortie, mais bon rien de bien concluant. Comment je pourrai faire pour ouvrir l'image donc ? J'ai essayé un ShellExecute mais vu ce que je reçois...
EDIT : Mise à jour du code (et du problème).
EDIT 2 : Re-mise à jour du code.
Re: [...] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 11:55
par mikell
Son cahier des charges dit "J'aimerais copier une de ces images dans le presse-papier "
C'est donc pour la coller qqe part ^^
Un Inetget ($url, $fichier) fait donc l'affaire...
Re: [...] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 12:00
par blacksoul305
Oui, je sais bien. Mais j'aimerai éviter de créer un autre sujet, surtout qu'à quelque chose près nos demandes se ressemblent. Comment je peux afficher l'image sur mon PC donc, sans passer une nouvelle fois par
l'explorer Internet Explorer ? En clair, lancer le fichier image dans le dossier temporaire de IE.
PS : J'étais parti faire ce code pour m'aider à trouver la solution, je me retrouve à demander de l'aide sur le même sujet !
PS 2 : Enfin, si tu veux pas répondre, pas grave. Mais c'dommage.
EDIT : Tu avais mal compris à mon avis car j'ai mis par Explorer à la place d'IE...
Re: [...] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 12:05
par mikell
blacksoul305 a écrit :PS 2 : Enfin, si tu veux pas répondre, pas grave
C'est pas que je veux pas, c'est que je vois pas

Re: [...] IE.au3 copier une image dans le presspapier
Posté : sam. 16 juin 2012 12:43
par blacksoul305
Hé oh ?! De quoi tu vois pas ?
Bah, je veux juste afficher l'image mais sur mon PC, pas sur internet.
J't'explique :
Le protocole boiteux de blacksoul
- On va sur le site, les images sont toutes téléchargées et placées dans le dossier des fichiers temporaires de IE.
- A l'aide InetGet et de _IEImgGetCollection, on prend l'image x et on veut la retrouver dans le dossier temporaire.
- Je veux lancer cette image depuis ce dossier, mais je bloque donc j'appelle mikell.
C'est simple non ?
EDIT : Mouais, apparemment ça a l'air impossible. Par contre je peux trouver moyen de télécharger l'image grâce $imgGetCollection.src. C'est juste plus long mais ça me va !
EDIT 2 : J'ai mis à jour mon code dans mon message un peu haut dessus. Tu peux m'expliquer pourquoi il télécharge une image, mais ne me dis pas qu'il a terminé. Je crois en fait qu'il en télécharge plusieurs...
Re: [...] IE.au3 copier une image dans le presspapier
Posté : dim. 17 juin 2012 12:24
par blacksoul305
Bon, Mikell, je reviens à la charge. En fait l'idée de récupérer des images me plaît bien, et donc du coup je suis resté dans cette optique, sauf que pour faire un truc simple j'me retrouve avec un problème pour le moins compliqué, surtout que je vois pas l'erreur.
Le code a été mis à jour, l'erreur est :
--> IE.au3 V2.4-0 Warning from function _IEImgGetCollection, $_IEStatus_NoMatch
C:\Documents and Settings\utilisateur\Bureau\teste.au3 (40) : ==> Variable must be of type "Object".:
GUICtrlCreateListViewItem($i & "|" & $imgCollection.nameProp & "|Non",$listview)
GUICtrlCreateListViewItem($i & "|" & $imgCollection^ ERROR
->12:21:54 AutoIT3.exe ended.rc:1
>Exit code: 1 Time: 9.656
Merci !
EDIT : Tu n'avais pas l'erreur, juste les lignes...

Re: [...] IE.au3 copier une image dans le presspapier
Posté : dim. 17 juin 2012 13:47
par yagonfstm91
Bon finalement il faut bien que je ne retélécharge pas l'image... (donc pas de InetGet)
Temporary internet Files aurait pu marcher mais enfaite l'image est en .cgi et j'arrive pas a la copier.
Donc j'ai essayer ca :
1 - Récupéré le code html de la page
2 - Trouve la chaine de l'image
3 - Réinséré sur la page uniquement le code html de l'image
4 - Prendre un screen de la fenetre meme si elle n'est pas active (
http://autoitscript.fr/forum/viewtopic.php?f=3&t=4070 )
Jusqu'ici j'ai réussi
5 - Découper le screen pour avoir uniquement l'image
Enfaite c'est pas grave si l'image n'est pas dans le presse papier, si j'arive a obtenir un fichier jpg ou png c'est bon.
Le problème avec la méthode ci dessus est que le screen est pas de très bonne qualité et que je me demande comment je vais faire pour découper l'image.
edit : pour découper l'image j'ai trouver une solution ici :
http://www.autoitscript.com/forum/topic ... ntry600404
Le probleme c'est que le scrip, je ne sais pas pourquoi, ne prend pas en compte les valeur de x et y :
$gdi_hLeftImage = _ImageCut($gdi_hImage, 5, 27, 100, 21)
Re: [...] IE.au3 copier une image dans le presspapier
Posté : dim. 17 juin 2012 14:00
par blacksoul305
mikell a écrit :Tu sais ton affaire c'est un peu 'pourquoi faire simple quand on peut faire compliqué'
Cela m'était adressé je crois !
Sinon pour le soucis de découper une image, tu as un
UDF Photoshop. Après c'pas tout le monde qui a ce logiciel.
Re: [...] IE.au3 copier une image dans le presspapier
Posté : dim. 17 juin 2012 15:01
par yagonfstm91
Ca existe pas un UDF Paint ? car pour ce que je veux faire paint suffit largement

Re: [...] IE.au3 copier une image dans le presspapier
Posté : dim. 17 juin 2012 15:14
par yagonfstm91
C'est bon j'ai réussi ! grace a imagemagick !

Re: [...] IE.au3 copier une image dans le presspapier
Posté : dim. 17 juin 2012 16:17
par mikell
yagonfstm91 a écrit :enfaite l'image est en .cgi et j'arrive pas a la copier.
Marrant ça, tu nous mettrais pas le lien de la page où tu veux piquer l'image ?