Boucle avec Alt+tab divise par 2 la boucle

Postez ici si vous avez des difficultés a comprendre une commande, ou a créer une macro.
Répondre
Furet73
Messages : 8
Enregistré le : 12 mars 2015, 16:54

Boucle avec Alt+tab divise par 2 la boucle

Message par Furet73 » 12 mars 2015, 17:40

Quand il y a utilisation de alt+tab dans une boucle, le nombre de boucle réalisé est divisé par 2 par rapport le nombre de boucle prévu.

Exemple : ouvrez 2 fenêtre Windows avec 10 fichiers dans chaque fenêtre et sélectionnez 1 fois le premier fichier de chaque fenetre.

Faites manuellement :

"Bas"
alt+tab
"Bas"
alt+tab

10 fois de suite ca vous fait sélectionné le 10em fichier de chaque fenêtre.

Le programme (de tête j'ai pas la syntaxe exact) :

Déclaration variable "compt"
Label1
"Bas"
Alt+tab
"Bas"
Alt+tab
Calcul "compt"+1
Examine "compt " < 10
Goto "label1"
Commentaire "fin de boucle"
Fenêtre "terminé"

Exécuter le programme et vous aurez le cinquième fichier sélectionné dans chaque fenêtre.

Un détail est que le temps mis pour effectuer l'opération correspond au temps d'effectuer 10 boucle (mettez une pose de 5s dans la boucle pour le vérifier).

Je suis preneur de toutes solution réglant le pb

Merci.

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

Re: Boucle avec Alt+tab divise par 2 la boucle

Message par Feitan » 13 mars 2015, 08:51

Hello, après plusieurs tests le ALT + TAB à l'air effectivement assez capricieux. Je ne sais pas pourquoi il se retrouve parfois à sélectionner une fenêtre qui ne correspond pas aux deux dernières.

Du coup plusieurs solutions s'offrent à toi :

- Limiter ton nombre de ALT + TAB
Je ne sais pas quel est le but de ta macro mais si c'est juste de la sélection de fichier tu descends 10 fois, tu ferme le dossier, tu ouvre le suivant, etc.

- Si tu veux vraiment changer de dossier à chaque passe par les handle (manipulation objet) ça fait un code un peu plus lourd mais ça aura la même fonction qu'un ALT + TAB, les problèmes en moins. J'ai du en parler quelquepart sur le forum, si tu as des soucis avec la fonction n'hésite pas.

- Passer sur des clics souris pour choisir les fenêtres.
Une solution toute bête à mettre en place c'est de mettre tes 2 dossiers (même plus mais c'est moins pratique) l'un à côté de l'autre et de faire déplacer ta souris selon l'axe X

Voilà, si tu as un soucis n'hésite pas.

Bon courage.

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

Re: Boucle avec Alt+tab divise par 2 la boucle

Message par Furet73 » 13 mars 2015, 10:54

Merci pour cette réponse rapide.

Non le programme que j'ai mis en exemple me sert juste de test rapide de la fonction alt+tab.

La finalité est d'avoir une fenêtre ouverte avec un grand nombre de fichiers et a côté un logiciel pour effectuer une modif dans ces fichiers. La modifs étant la même pour tous j'ai créé une boucle pour effectuer la modif dans le logiciel puis une fois terminé faire un alt+tab pour retourner dans le dossier plein de fichier, simuler la touche "bas" puis entrer.
Une fois la touche enter appuyé je me retrouve dans le logiciel pret a effectué la 2em modif.
Pour le moment mon programme final fonctionne car je fait la sélection du dossier avec un déplacement de souris. Mais je tente de remplacer tout les déplacements de souris par des raccourcis clavier ou des codes programme ; je fait ça pour que quand je change de pc je n'ai pas a redéfinir les positions des souris du fait que les écrans n'ont pas les mêmes dimensions et résolution.
Je vais donc faire des recherches sur ta solution de handle.

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

Re: Boucle avec Alt+tab divise par 2 la boucle

Message par Feitan » 13 mars 2015, 20:33

Tu peux aussi rendre ton déplacement de souris proportionnel en fonction de la taille de l'écran :

Si ton écran est en 1920*1080 tu peux faire la macro :

Variable <X>;1920;Numerique;
Variable <Y>;1080;Numerique;
Variable <facteur_X>;0;Numerique;
Variable <facteur_Y>;0;Numerique;
Variable [SCREEN.X];0;Numerique;
Variable [SCREEN.Y];0;Numerique;
Calcul évolué <facteur_X>=<X>/[SCREEN.X]
Calcul évolué <facteur_Y>=<Y>/[SCREEN.Y]


Bon c'est un peu chiant parceque avant chaque déplacement de souris tu dois mettre la valeur en variable et l'a multiplier par ton facteur mais c'est faisable.

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

Re: Boucle avec Alt+tab divise par 2 la boucle

Message par Furet73 » 17 mars 2015, 09:20

Bonjour, j'ai trouvé une solution pour le problème de alt+tab.

remplacer :

Type Special ALT;TAB;

par :

Type Special ALT;[KeyDown];
Type Special TAB;
Type Special ALT;[KeyUp];

je pense qu'il doit y avoir une sorte de problème avec l'horloge interne lors de l'appuie "réellement" simultané de la commande : Type Special ALT;TAB;

du coup j'utilise la même formule pour toutes mes commandes composé comme alt+F4 ou ctrl+S qui deviennent respectivement :

Type Special ALT;[KeyDown];
Type Special F4;
Type Special ALT;[KeyUp];

et

Type Special CTRL;[KeyDown];
Type Special S;
Type Special CTRL;[KeyUp];


ce qui me règle beaucoup de problème et m'a permis de réduire le temps de certaines "Pause" qui règle mes programmes.

PS : par contre je n'ai pas réussi à utiliser (comprendre) la fonction handle et/ou objet.
Donc si quelqu'un passe par là par hasard et connait un lien vers un message ou un tutoriel qui traite de façon assez complète du sujet je le remercie par avance de me faire suivre ce lien car je pense que ces fonctions pourraient m'être utile par la suite.
Je continuerais mes recherches sur ces sujets quand j'aurais plus de temps.
Merci à tous.

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

Re: Boucle avec Alt+tab divise par 2 la boucle

Message par Feitan » 17 mars 2015, 23:52

Hello, on en a un peu parler dans ce sujet là : http://supermacro.legtux.org/phpBB3/vie ... ?f=3&t=142

Avatar du membre
Onissius
Messages : 744
Enregistré le : 11 avr. 2014, 22:47
Localisation : Lyon (France)
Contact :

Re: Boucle avec Alt+tab divise par 2 la boucle

Message par Onissius » 21 mars 2015, 19:51

Quant je fait du Alt + Tab, je suis obligé de faire :
- Alt (pressé)
- Tab (normal)
- Alt (Levé)

Et normalement, ça passe. Tu peu aussi fait une macro "Alt/Tab" et tu l'appel dans ta macro principale.
J'ai découvert SM en 99, rapidement Adam m'a promu admin.
Posez vos questions aussi clairement que possible, sans fautes qui piquent les yeux et relisez vous.
Vérifiez sur mon DISCORD si je suis en ligne.

Répondre