SM ne reconnait pas les fenêtres

Postez ici si vous avez des difficultés a comprendre une commande, ou a créer une macro.
Répondre
lqr
Messages : 3
Enregistré le : 01 mars 2015, 23:35

SM ne reconnait pas les fenêtres

Message par lqr » 02 mars 2015, 19:53

Bonjour,
J'aurais voulu utiliser SM pour récupérer de ma grosse bdd Calibre des informations pour les recopier dans fichiers word/excel
Je me suis pioché la tête hier toute la soirée pour trouver une solution mais je butte contre le problème que la macro ne reconnait pas les fenêtres qu'elle ouvre dans la boucle (en particulier des fenêtres de l'explorateur windows - qui de plus s'ouvrent sur l'écran en position aléatoire - dont je veux récupérer la liste des fichiers avec "filemenu tools"). J'imagine que ces fenêtres doivent avoir des références (handle ??) différentes à chaque fois. De même pour mes fichiers 'xls' et 'doc' j'aurais voulu pouvoir utiliser un fichier générique et non avec un nom précis, sans devoir renommer dans macro.

Dans la fonction "objet", que j'utilise l'enregistreur de macro ou la commande, SM enregistre systématiquement le nom de la fenêtre (que ce soit explorateur ou office) et si je rentre dans les paramètres de la fonction pour retirer ce nom, visiblement ça bloque et la maudite petite caméra apparaît en bas à droite.

Quelqu'un aurait-il une piste pour résoudre mon problème ? et y aurait-il de la doc quelque part sur cette fonction "objet" et ses paramètres qui la composent, notamment, on remarque que la restitution est très différente lorsqu'on utilise la commande en direct ou qu'on récupère des séquences d'enregistreur ? Peut-on placer, par exemple ces commandes en début de macro pour définir les paramètres des fenêtres utilisées ou faut-il les requalifier dans le déroulé de la macro à chaque fois que l'on revient sur fenêtre, et faut-il d'abord prévoir un clic sur bandeau d'une fenêtre pourtant affiché écran en 1er plan?
Merci à l'aide espérée des contributeurs !

PS en lisant quelques posts de ce forum, je m'aperçois que certains auraient avantage à exploiter davantage les batchs dos qui sans aller aussi loin que SM permettent facilement de faire pas mal de petites requêtes sympa, evec des commandes qui ont notamment la délicatesse de faire poliment la queue lorsqu'une tâche précédente de l’algorithme prend un peu ou beaucoup de temps...

xan2622
Messages : 173
Enregistré le : 11 avr. 2014, 18:15

Re: SM ne reconnait pas les fenêtres

Message par xan2622 » 03 mars 2015, 07:14

J'imagine que ces fenêtres doivent avoir des références (handle ??) différentes à chaque fois.
Tu as essayé de lancer les fenêtres de Explorer dans un processus différent ?
Image

lqr
Messages : 3
Enregistré le : 01 mars 2015, 23:35

Re: SM ne reconnait pas les fenêtres

Message par lqr » 14 mars 2015, 19:10

ca change rien :(
quand je passe par "enregistrer la séquence" pour ouvrir une fenêtre explorateur, il m'indique un "handle". Si je recommence cet enregistrement de séquence à l'identique pour ouvrir à nouveau l'explorateur il génère un autre handle. Du coup quand je fais tourner la macro, il bloque, car il ne reconnait pas la fenêtre de l'explorateur sur laquelle il doit travailler
Y a t il une solution dans la définition de la supermacro ? (style chopper la fenêtre explorateur ouverte par la macro directement à la souris pour la rendre active, de la repositionner avec la commande "manipulation", sans être attaché au handle de cette fenêtre, et puis de faire le job sur cette fenêtre avant de la fermer)

Avatar du membre
Feitan
Site Admin
Messages : 301
Enregistré le : 11 avr. 2014, 15:15

Re: SM ne reconnait pas les fenêtres

Message par Feitan » 14 mars 2015, 21:41

Reste attaché au Handle qui est très pratique. Le truc c'est de mettre le handle de la fenêtre dans une variable.

Tu ouvre ta fenêtre 1 elle se retrouve donc active. Tu peux donc récupérer le handle de la fenêtre dans les variables systèmes, c'est celle qui s'appelle "[HANDLE.ACTIVEWINDOW]" du coup après il te suffit de stocker cette valeur dans une variable [fenetre_1] par exemple. Et de l'utiliser dans ta macro.

Si tu as plusieurs fenêtres à gérer ça sera beaucoup plus pratique avec les handle.

lqr
Messages : 3
Enregistré le : 01 mars 2015, 23:35

Re: SM ne reconnait pas les fenêtres

Message par lqr » 17 mars 2015, 12:04

Super ! & grand merci à Feitan (et à Supermacro...) dont la piste a débloqué mes recherches. J'ai réussi à venir à bout de mon problème (pour la mise au point, j'ai notamment tracé ma macro avec des commandes message pour récupérer à chaque étape les états des variables [HANDLE.ACTIVEWINDOW] et [HANDLE.FOREGROUNDWINDOW]).
Pour les nouveaux pratiquants, n'oubliez pas de consulter la page d'aide (bravo au boulot des documentateurs ! ) concernant les variables systèmes, qui vous ouvrira de nouveaux horizons.

Question subsidiaire : dans la commande objet, le paramètre handle parait figé et nécessite une définition manuelle. Je n'ai pas trouvé la méthode pour éventuellement pouvoir définir le handle à partir d'une variable par exemple, alors que dans la commande manipulation, ce handle est accessible (si quelqu'un a une méthode, ce serait sympa d'afficher en réponse les lignes de bot concernées).
Ceci m'oblige apparemment lorsque je fais tourner la macro à plusieurs reprises de devoir redéfinir un par un tous mes objets pour ré-ajuster les handles qui changent à chaque nouvelle ouverture d'un même fichier (par exemple word ou XL)
2ème question : A quoi correspond la notion de handle parent et quel est son utilisation ? J'ai désespérément cherché dans les rubriques d'aide sans succès...

Avatar du membre
Feitan
Site Admin
Messages : 301
Enregistré le : 11 avr. 2014, 15:15

Re: SM ne reconnait pas les fenêtres

Message par Feitan » 18 mars 2015, 00:32

Hello, j'ai pas trop compris ta première question. Je regarde demain si j'ai un peu de temps voir si je l'a comprends un peu mieux mais là je vois pas.
Du coup si tu repasse hésite pas à reformuler ;)

Furet73
Messages : 8
Enregistré le : 12 mars 2015, 16:54

Re: SM ne reconnait pas les fenêtres

Message par Furet73 » 30 mars 2015, 14:03

Bonjour, je pense avoir le même problème, je me permet donc de reformuler ce que je pense avoir compris.
Lorsque l'on utilise la commande objet, on doit effectuer une capture de l'objet en déplaçant la souris, ce qui donnera un handle fixe a la commande objet.
Lorsque l'on utilise les variables [HANDLE.ACTIVEWINDOW] et [HANDLE.FOREGROUNDWINDOW]) ; on peut charger le handle dans une variable pour pouvoir l'utiliser plus tard.
Le problème (pour ma part) viens quand j'ai besoin d'utiliser l'option "attendre" de la commande "objet" avant de continuer la macro sur un objet qui à un handle variable.

Un exemple avec un programme bien lourd : autocad

Je souhaite ouvrir 10 fichiers (nombre arbitraire) sous autocad et attendre qu'autocad ait fini de charger les 10 fichiers avant de poursuivre la macro

j'ai préalablement chargé le handle de autocad et du dossier ou se trouve les 10 fichiers à ouvrir dans des fichiers textes pour simplifier la macro d'exemple.

j'ai créé ce programme pour l'exemple :

Variable [DELAY];400;Numerique;
Variable <HandleAutocad>;;Alpha;
Variable <HandleDossier>;;Alpha;
Variable [HANDLE.ACTIVEWINDOW];0;Numerique;
Lire C:\.......\Desktop\handle.txt;<HandleAutocad>;1;
Lire C:\.......\Desktop\handle DOSSIER.txt;<HandleDossier>;1;
Manipulation <HandleDossier>;Déplacement souris;;;
Click Left click;
Type Special CTRL;A;
Type Special ENTREE;
Objet 3410228;0;acad.exe;AfxMDIFrame110u;Autodesk AutoCAD 2015 - [053.dwg];1936;1056;1;1;;;160;
Message Message;chargé;

Lors de la création de ce programme j'ai utiliser la commande objet et j'ai capturer manuellement le handle de autocad (3410228)

mais si le handle de autocad change la macro ne marche plus.

Comment faire pour que :

Objet 3410228;0;acad.exe;AfxMDIFrame110u;Autodesk AutoCAD 2015 - [053.dwg];1936;1056;1;1;;;160;

devienne :

Objet <HandleAutocad>;0;acad.exe;AfxMDIFrame110u;Autodesk AutoCAD 2015 - [053.dwg];1936;1056;1;1;;;160;

En espérant avoir été clair et pas trop brouillon.

Merci d'avance.

Avatar du membre
Feitan
Site Admin
Messages : 301
Enregistré le : 11 avr. 2014, 15:15

Re: SM ne reconnait pas les fenêtres

Message par Feitan » 01 avr. 2015, 19:04

Hello, désolé pour la réponse tardive mais j'ai pas trouvé de solution.

A moins de faire une macro qui va créer une macro avec le bon Handle de Autocad mais c'est tordu (mais faisable en y pensant).

On peut ptet partir sur ça parceque j'ai pas vraiment d'idée là

phr
Messages : 15
Enregistré le : 21 avr. 2014, 00:06

Re: SM ne reconnait pas les fenêtres

Message par phr » 01 avr. 2015, 22:11

Bonsoir
En listant les fenêtres, avec le nom de la fenêtre il doit être possible de récupérer le Handle ?
Dans le nom des fenêtres Acad, il y a le nom du fichier dwg ouvert. C'est un piste.

Répondre