[R] AutoIT dans une machine virtuelle
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
- Niveau 2
- Messages : 16
- Enregistré le : ven. 08 janv. 2010 00:34
- Status : Hors ligne
[R] AutoIT dans une machine virtuelle
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
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.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
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 ?
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é".
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é".
-
- Niveau 2
- Messages : 16
- Enregistré le : ven. 08 janv. 2010 00:34
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
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 :
mais ça n'a pas l'air de fonctionner.
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
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
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 ?
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é".
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é".
-
- Niveau 2
- Messages : 16
- Enregistré le : ven. 08 janv. 2010 00:34
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
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.
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.
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
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é ).
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é ).
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é".
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é".
-
- Niveau 2
- Messages : 16
- Enregistré le : ven. 08 janv. 2010 00:34
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
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 :
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
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
s'il vous plait, éclairez-moi
- Iste
- Niveau 11
- Messages : 1870
- Enregistré le : jeu. 04 déc. 2008 14:21
- Localisation : 76
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
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 !
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
- Tlem
- Site Admin
- Messages : 11773
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
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().
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.
Mon test à consisté à faire une ouverture temporisée de MsPaint.exe et à faire un petit dessin sans prétention à coup de MouseMove().
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é".
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é".
-
- Niveau 2
- Messages : 16
- Enregistré le : ven. 08 janv. 2010 00:34
- Status : Hors ligne
Re: [..] AutoIT dans une machine virtuelle
Tout est réglé. Ca fonctionne au top !
merci encore.
merci encore.
Re: [R] AutoIT dans une machine virtuelle
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
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