[R] AutoIT dans une machine virtuelle

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
ne0vincent
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 08 janv. 2010 00:34
Status : Hors ligne

[R] AutoIT dans une machine virtuelle

#1

Message par ne0vincent »

Bonsoir à tous :)

Alors. J'ai un programme autoIT qui fonctionne parfaitement, mais qui nécessite d'être "logué" sur le poste.
Le verrouillage de la session désactivant tout focus de fenêtres, curseur, etc... Jusque là, c'est normal.

Le but de mon script est de naviguer sur internet et d'effectuer un certain nombres de manips (login compte, clic)

Et l'autre but étant que ce script fonctionne sur un serveur, planqué dans un coin. Session verrouillé, sans écran, sans clavier ni souris.

J'ai donc réfléchie à une petite solution. Je me suis dit que faire tourner l'appli autoIT dans une machine virtuelle type VMware pourrait résoudre le problème, puisque celle-çi ne sera jamais verrouillé.

En théorie un tel truc devrait marcher. Oui devrait, parce que malheureusement ça ne fonctionne pas....

Dès que je verrouille la session du PC hôte, c'est à dire le windows qui fait tourner la machine virtuelle, tout est mis en stand-by sur la machine virtuelle et le script se mets en pause.

Je précise une nouvelle fois que je suis Obligé de verrouiller la session du PC hôte. Le windows de la machine virtuelle, lui, ne l'est pas.

Donc j'aimerai bien trouver une solution à mon petit problème. Peut-être qu'il faudrait ajouter une fonction dans le code pour reprendre le focus. Je ne sais pas. J'ignore complètement ce qu'il se passe quand je verrouille, alors que ce n'est pas le même windows.

Il a aucune raison pour que le script s'arrête.

Merci de votre aide :(
Modifié en dernier par ne0vincent le jeu. 14 janv. 2010 01:20, modifié 1 fois.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#2

Message par Tlem »

Avez-vous essayé de faire tourner un autre logiciel dans cette VM avec la session verrouillée ?
Il me semble, de tête que à partir du moment ou la partie graphique est désactivée (session fermée, session verrouillée) que les logiciels exploitant cette partie sont tout simplement mis en attente (a vérifier).

Sinon, quelles types d'opérations votre script est-il sensé faire ?
Avec GUI ou sans GUI ?
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é".
ne0vincent
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 08 janv. 2010 00:34
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#3

Message par ne0vincent »

Bon alors visiblement le curseur n'est pas désactivé contrairement à ce que je pensais.
l'appli bloque aux niveau des WinWaitActive("Mozilla - Firefox"). Les fenêtres ne sont pas focus et les WinWaitActive sur attente indéfiniement. Le timeout n'est pas applicable dans le contexte de mon code.

Ce qu'il me faudrait c'est une petite boucle du genre :

Code : Tout sélectionner

While (WinWaitActive <> 1)
          Send("!{TAB}")
         Sleep(100)
WEnd
mais ça n'a pas l'air de fonctionner.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#4

Message par Tlem »

Si la partie graphique est désactivée du fait du verrouillage de la session, je ne vois aucune solution lié aux GUI's.
Est-ce que votre script doit obligatoirement passé par la gestion de fenêtres ?
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é".
ne0vincent
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 08 janv. 2010 00:34
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#5

Message par ne0vincent »

non non, mon script t'intègre pas d'interface (GUI).
Il agit seulement sur Firefox, quelques MouseClick, etc...

Je reprécise une nouvelle fois que le windows qui fait tourner ce script n'est Pas vérrouillé, puisque c'est la machine virtuelle.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#6

Message par Tlem »

Heuuu si vous utilisez des MouseClic(), alors vous avez besoin de la partie graphique de votre OS ...

Si la session est verrouillée dans la machine hôte, alors j'ai bien peur que la partie graphique de la machine virtuelle soit désactivée.
Essayez un soft qui affiche des lignes de log quelconque pour voir si ça fonctionne. Si j'en ai le temps je testerais ce soir (c'est pas gagné :roll: ).
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é".
ne0vincent
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 08 janv. 2010 00:34
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#7

Message par ne0vincent »

Bon j'ai un autre soucie. Concernant le focus des fenêtres je pense avoir résolu le problème.

Je me logue sur une page web => j'accède à la page d'accueil.
l'ennuie c'est qu'une pub apparait de temps à autre sur cette page d'accueil. Fichtre! je m'en serai bien passé.
donc je taff depuis une bonne heure et demi sur un détecteur de pub (concrètement je détecte le pixel noir du lien "fermer" de cette publicité)
Si ce pixel est détecté j'envoie un Mouseclick à cet endroit.

Ca m'oblige à passer par des "threads", 2 processus différents. Un processus correspond à mon code principal et l'autre à la détection de ce pixel noir, à cet endroit précis.

J'essaye de faire ça avec AdlibRegister()/ AdlibUnRegister()

Apparemment ça ne fonctionne pas.

A un moment donné, mes 2 "processus" utilise la même fonction :

Code : Tout sélectionner

 Func Verif_pixel ($a, $b, $color)
            While (PixelGetColor($a, $b) <> $color) ;tant que la pixel n'est pas detecté
                Sleep(200) ;attendre 1ms
            WEnd
 EndFunc
En temps normal, elle fonctionne parfaitement. Sauf que quand les 2 threads l'utilise en même temps. Tout déconne. Du moins la fonction ne termine jamais.

s'il vous plait, éclairez-moi :?
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#8

Message par Iste »

es-ce que, par hasard, le script resterait bloquer sur Verif_pixel() ?
Surement, vu que cette fonction ne laisse pas la main tant qu'elle n'a pas trouvé de pub.

Ne pas mettre de boucle dans les fonction appelées par des Adlib !

Sinon, Addblockplus fait tres bien son boulot pour virer les pub ;)


Par contre, comme vous l'a répéter Tlem encore et encore, quand la session est fermée il n'y a plus de gestion des GUI, donc adieu PixelGetColor() !
Mais si vous y arrivez, n'hésitez pas a partager votre solution !
Signez ici
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#9

Message par Tlem »

Après quelques tests dans Microsoft Virtual PC avec un Windows XP SP2, je peut dire que le déplacement de la souris est parfaitement pris en compte dans la machine virtuelle, que la session de l'hôte soit verrouillée ou non (ca c'est une super bonne nouvelle ...).

Mon test à consisté à faire une ouverture temporisée de MsPaint.exe et à faire un petit dessin sans prétention à coup de MouseMove(). :mrgreen:

Par contre ce test ne fonctionne pas si on verrouille la session du PC ou le script est lancé.

J'en déduit donc :
OS avec session verrouillée + Machine Virtuelle en fonction avec script graphique = Fonctions graphique entièrement gérées dans la VM.

OS avec session verrouillée + Script graphique = Fonctions graphique non gérées.
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é".
ne0vincent
Niveau 2
Niveau 2
Messages : 16
Enregistré le : ven. 08 janv. 2010 00:34
Status : Hors ligne

Re: [..] AutoIT dans une machine virtuelle

#10

Message par ne0vincent »

Tout est réglé. Ca fonctionne au top ! :D

merci encore.
DCVolo
Niveau 4
Niveau 4
Messages : 57
Enregistré le : dim. 25 avr. 2010 20:54
Status : Hors ligne

Re: [R] AutoIT dans une machine virtuelle

#11

Message par DCVolo »

Bonjour,

j'ai un peu le meme soucis, à ce que j'ai compris en gros je vais devoir utiliser le clavier visuel de windows pour mon probleme avec la souris ? o_O


http://www.autoitscript.fr/forum/viewto ... f=3&t=5127
Répondre