besoin d'aide, je tourne en rond... ça n'avance pas

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

besoin d'aide, je tourne en rond... ça n'avance pas

#1

Message par Ciol13 »

Bonjour à tous, ou bonsoir

j'ai découvert autoit il y a peu, dans le cadre d'un projet que je souhaite développer, mais je me heurte à un problème : ça ne fonctionne pas!! enfin, pas comme je le voudrais!

Je m'explique, mais tout d'abord, un peu de contexte :

J'utilise un logiciel pour télérelever des informations sur des sites distants, mais ces informations arrivant en continu au fil du temps, chaque nouvelle info écrase la plus ancienne. Afin de n'en perdre aucune, je souhaite faire un script qui va lancer une télérelève de tous mes sites une fois par semaine

problème : le logiciel de télérelève me présente 4 possiblités :
1, ça fonctionne
2, problème de connexion
3, pas d'évènement
4, cartes non formatées

donc j'écris mon script très simplement de la manière suivante

If ça fonctionne, then...
elseif problème de connexion then...
elseif pas d'évènement then...
elseif cartes non formatées then...

dans le cas ou ça fonctionne, tout va bien, toutes les opérations se déroulent correctement
dans le cas où j'ai un problème de connexion, ça plante, et là, je ne comprend pas pourquoi

après avoir parcouru en long, en large et en travers, si je comprends bien tout, c'est soit tu as ça, alors tu fais ça, sinon, ...

après, pour information, ça peut aider, je viens d'y penser :

mon script consiste à sélectionner un site dans une liste, ensuite, choisir plusieurs critères, temporels, ou autres, et ensuite, se connecter au site distant (en 56k, oui, je sais... ça prend du temps) ensuite, rapatrier le contenu, et auquel cas, telle boite de dialogue s'affiche
si le site distant est occupé alors une autre boite de dialogue s'affiche, j'ai donc utilisé le Ifwinexists, then

merci pour votre aide, vraiment

bonne soirée
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#2

Message par blacksoul305 »

Salut et bienvenue.
dans le cas où j'ai un problème de connexion, ça plante, et là, je ne comprend pas pourquoi
Je suis désolé mais avec ça, ça va vraiment être compliqué d'aider. On peut pas avoir un code ou bien la partie du code incriminée ?
Étudiant en 2ème année de Licence Informatique.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#3

Message par jguinch »

Il y a un problème de variable non déclarée ligne 42 :roll:
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#4

Message par blacksoul305 »

Ah, au temps pour moi, j'avais pas vue :?
Étudiant en 2ème année de Licence Informatique.
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#5

Message par Ciol13 »

Merci pour ton acceuil

Je tente de te joindre un morceau du code, je n'ai pas tout mis, donc il n'y a pas les endif, parce que sinon, il y en a 924 lignes, et encore, j'ai simplifié, bon, et ça, c'est pour un seul site, j'en ai une bonne quinzaine à télérelever les uns à la suite des autres,

Je m'explique, If If WinExists("", " TS rapatriées ") signifie qu'à l'issue de ma connexion, le site distant a répondu, et les télésignalisations sont rapatriées, le cas échéant, le les converti en fichier texte, et ensuite, je colle ça sur mon rapport,

ElseIf WinExists($sEvalString2, " PAS D'EVENEMENTS DANS LA PERIODE SPECIFIEE ") sinon, si c'est cette fenêtre qui s'ouvre, j'entame une autre série d'action...

quand j'essaye, si ça fonctionne, et ben tout va bien, par contre, si la fenêtre " PAS D'EVENEMENTS DANS LA PERIODE SPECIFIEE " s'ouvre, alors il ne se passe rien, on dirait qu'il attends que "", " TS rapatriées " s'ouvre avant de continuer à dérouler sa liste d'ordre, alors que justement, le but étant que si cette fenêtre ne s'ouvre pas, alors on regarde la condition suivante, et ainsi de suite

Le hic dans l'histoire, c'est qu'il n'est défini à aucun moment combien de temps il doit attendre, je pense que c'est peut être là que réside la problème, mais là...

Code : Tout sélectionner

	WinActivate("", " Libellés tranche sélectionnés ")											
	WinWaitActive("", " Libellés tranche sélectionnés ")
	;	Atteindre le site
	Send("{DOWN 46}")																			
	; 	Choix du critère de sélection "depuis 1 semaine"
	Send("{TAB 7}{UP 5}{DOWN}")																				
	; 	Choix de la voie : Imprimantes 1 et 2
	Send("{TAB}{UP 4}{DOWN 2}")																				
	;	Appui sur le bouton de connexion "Distante"
	Send("{TAB}{ENTER}")																				
		If WinExists("", "  TS rapatriées ") Then												

	; 	Commande de convertion des TS du site de en fichier texte "Convertir"
			Send("!v")																			
	; 	La fenêtre de sauvegarde s'ouvre
			WinWaitActive($sEvalString2)														
			Send("{ENTER}")																		
			Sleep(500)																			
	;	 Demande de raccrochage
			Send("!R")																			
			Sleep(500)																			
			Send("{ENTER}")																		
			WinWaitActive("", " Libellés tranche sélectionnés ")								
	;	Rapport de connexion au site
			WinActivate("Rapport de télérelève")												
			WinWaitActive("Rapport de télérelève")												
			Send("{TAB}Connexion : OK{ENTER}{ENTER}{TAB}Télésignalisations rapatriées :{ENTER}{ENTER}{ENTER}{ENTER}{UP 2}")
			Sleep(500)																			
	; 	Modification de la police de caractères pour le collage des TS
			Send("!lodS{DOWN 14}{TAB}{DOWN 7}{RIGHT 4}{ENTER}u{TAB 6}{ENTER}!t{TAB}{DOWN 4}{ENTER}{TAB}{ENTER}")
			Sleep(500)																			
			Send("!lpoarial{TAB}8{ENTER}")														
	; 	démarrage du fichier texte créé
			ShellExecute($sEvalString3)															
			WinWaitActive($sEvalString4)														
	; 	Sélection de tout le texte
			Send("^a")																			
	;	Copie de l'ensemble du texte
			Send("^c")																			
	; 	Activation de la fenêtre du fichier Word
			WinActivate("Rapport de télérelève")												
			WinWaitActive("Rapport de télérelève")												
			Sleep(500)																			
	; 	Copie du texte
			Send("{ENTER}")
			send("^v")
			send("{DOWN 2}{TAB}")
			send("Le rapatriement des télésignalisations est terminé")
			send("{ENTER}{ENTER}")
			send("Déconnexion de la TM3000 de ")
			send($sEvalString)
			send("{TAB 6}")
			Send("le " & _NowDate())															
			Send("{space}")																		
			Send("à " & _NowTime())																
			Sleep(500)																			
			Send("{ENTER}{ENTER}{ENTER}")														
			Send("!la Télérelève du site de ")
			send($sEvalString)
			send(" terminée")
			send("{ENTER}")
			Send("!lods{UP 25}{DOWN 6}{TAB}{DOWN}{ENTER}u{TAB 5}{ENTER}{TAB 3}{ENTER}{DOWN}")
			send("!sa")																			
	;	Activation de la fenêtre du fichier TXT
			WinActivate($sEvalString4)															
			WinWaitActive($sEvalString4)														
	;	Fermeture du fichier TXT
			Send("!fq")																			
	; 	Suppression du fichier TXT
			FileDelete($sEvalString3)															
	;	Réactiver le fichier du rapport de télérelève
			WinActivate("Rapport de télérelève")												
			WinWaitActive("Rapport de télérelève")												
			Sleep(500)																			

;	If 2 : Pas d'évènement dans la période spécifée

		ElseIf WinExists($sEvalString2, " PAS D'EVENEMENTS DANS LA PERIODE SPECIFIEE ") Then	
			Send("{TAB}{ENTER}")																
			WinWaitActive("", " Libellés tranche sélectionnés ")								
			Sleep(500)																			
			WinActivate("Rapport de télérelève")												
			WinWaitActive("Rapport de télérelève")												
			Sleep(500)																			
			Send("Pas d'évènement dans la période spécifiée avec les critères sélectionnés,")
			send("{ENTER}")
			send("Déconnexion de la TM3000 de ")
			send($sEvalString)
			send("{TAB 5}")																		
			Send("le " & _NowDate())															
			Send("{space}")																		
			Send("à " & _NowTime())																
			Sleep(500)																			
			Send("{ENTER}{ENTER}Une seconde tentative est réalisée sur les autres voies...{ENTER}{ENTER}Critères sélectionnés :{ENTER}{TAB}- Depuis 1 semaine{ENTER}Autres voies{ENTER}{BS 3}{ENTER}")																		;	renvoi à la ligne
			Sleep(500)																			
			WinActivate("", " Libellés tranche sélectionnés ")									
			WinWaitActive("", " Libellés tranche sélectionnés ")								
			Sleep(100)																			
			Send("{TAB 8}{DOWN}{TAB}{ENTER}")													
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#6

Message par blacksoul305 »

Re,

Aie aie ! Ça c'est du code qu'on appelle "code carton" ou "code bricolage", parce que tout est à base de "Send", ainsi, si l'environnement dans lequel est exécuté le programme bouge, tout se casse la figure. C'est pas fiable du tout. Maintenant c'est normal si tu viens de découvrir AutoIt.

L'idée est donc dans un premier temps de se débarrasser de tout ça. Si j'ai bien compris, tu utilises un programme pour récupérer tes infos, ce programme est-il sous forme d'interface graphique ?(à priori oui d'après les commentaires). Si c'est le cas tu peux utiliser l'utilitaire de scite AutoIt Window Info tool ou encore Control Viewer, qui te permettront de récupérer le handle de tous les éléments de l'interface pour non seulement interagir avec (clique sur bouton, entrée de texte) ou bien lire des champs d'entrées, tout ça à l'aide des fonctions Controlxxx.

Une fois que ce système sera mis en place, ça sera déjà plus évident de déboguer ton programme.
Étudiant en 2ème année de Licence Informatique.
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#7

Message par Ciol13 »

Je me doutais bien que c'était un code en carton, ceci dit, l'environnement n'est pas amené à évoluer, donc, en soit, ça me suffisait, bon, bien entendu, je suis là pour évoluer aussi,

Oui, c'est une interface graphique,

je vais m'informer sur ce que tu me proposes, et je vois ensuite, par contre, ça ne m'explique pas pourquoi lorsque qu'il n'a pas sa condition du if il ne continue pas sur le elseif

Bon, je regarde ce que tu me dis, et je tente un quelque chose dans la semaine

merci beaucoup
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#8

Message par blacksoul305 »

Ça marche, bon courage !

Au fait, petite astuce quand tu bosses sur un programme qui est susceptible de rester/passer dans plusieurs états comme ton énorme bloc de If/Elseif/Endif, utilise des ToolTip. Par exemple juste en dessous de chaque condition, si elle est vérifiée, la première chose que tu mets c'est : ToolTip("Un message permettant te dire où ton programme est coincé",5, 0) ; <- fait apparaître coin supérieur gauche de l'écran le message

Du coup après tu peux afficher des contenus de variables bref, tout ce qui peut t'aider à comprendre pourquoi cette condition et pas une autre.
Étudiant en 2ème année de Licence Informatique.
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#9

Message par Ciol13 »

Bonsoir, j'ai une nouvelle questionnette, c'est dire si elle est petite : on peut connaitre if winexists, mais comment peut on connaitre if msgboxexists? parce que je fais des essais, et je pense que c'est ça qui ne convient pas, avec un truc tout simple sur le bloc note, un truc à la mord moi le ...

Bref,

@ blacksoul305, j'ai commencé à regarder ce que tu me disais avec AutoIt Window Info tool ou encore Control Viewer, je suis rincé, je n'y comprend rien, mais je creuse, je creuse, je vais peut être finir par trouver du pétrole...

allez, je vais dormir, bonne nuit, et merci beaucoup pour votre aide
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#10

Message par orax »

Avec le Bloc-notes, je fais Fichier > Enregistrer sous... Dans le nom du fichier, je mets un nom de fichier déjà existant. Je clique sur Enregistrer. Là, j'ai la Msgbox "Confirmer l’enregistrement" qui s'affiche.
Le titre de la Msgbox est "Confirmer l’enregistrement". D'ailleurs, si je ne dis pas de bêtises, une Msgbox est une fenêtre donc on peut également utiliser WinExists.

Code : Tout sélectionner

If WinExists("Confirmer l’enregistrement") Then ConsoleWrite(":o)" & @CRLF)
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#11

Message par blacksoul305 »

Salut,

je vais reprendre l'exemple proposé par Orax et surtout te donner de quoi visualiser. Personnellement j'utilise Control Viewer (enfin, utilisais parce que je n'automatise plus grand chose), puisqu'il est assez complet et puis intuitif.

Je souhaite enregistrer mon fichier par dessus un autre et comme il a déjà été dit, une boite de dialogue va s'ouvrir en me demandant si oui ou non je veux l'enregistrer. Pour automatiser ça il me faut plusieurs choses :
  • De quoi manipuler la fenêtre
  • De quoi manipuler le bouton de mon choix.
Pour la fenêtre, on a les fonctions Win..., quant au bouton, on a les fonctions Control... . Ces fonctions ne sont pas compliqués puisqu'elles acceptent un tas de choses : Un titre, un handle, une classe, un ID bref, on a l'embarras du choix. Pour avoir ces informations, on utilise Control Viewer. On prend la loupe en cliquant dessus, et on la fait glisser sur la fenêtre. Control Viewer nous affiche donc un résumé de la fenêtre et en dessous, les infos de bases sur chacun des contrôles !

Moi j'aime bien utiliser les handle, pour la simple est bonne raison qu'un handle est donné par Windows et qu'il est unique. Le titre quant à lui n'est pas unique ce qui rend les choses plus compliquées dans le cas d'automatisation de mêmes programmes en même temps. Les deux sont utilisables et viables dans cet exemple, ci-dessous une capture d'écran et un code, en espérant éclaircir un peu les choses.

Image

Code : Tout sélectionner

Local $sWinTitle = "Confirmer l’enregistrement", $hdlDialog = HWnd("0x00180DC6")
Local $hdlYesButton = HWnd(0x00240D6E) ; handle du bouton pour le manipuler

If WinExists($sWinTitle) Then
	MsgBox(64, "Infos", "Titre de la fenêtre : " & WinGetTitle($hdlDialog) & @CRLF & "Contenu du bouton : " & ControlGetText($hdlDialog, "", $hdlYesButton))
	ControlClick($hdlDialog, "", $hdlYesButton)
EndIf
Pour en revenir au problème principal, j'aimerais souligner le fait qu'une fenêtre pas affichée mais créée existe. Ainsi, peut-être que lorsque la seconde condition de ton programme est vérifiée, une boite de dialogue s'ouvre, mais la fenêtre principale "TS rapatriés" est seulement cachée. Cachée mais existante, donc ton programme reste dans le premier état. Ce n'est qu'une supposition, il faudrait tester en ajoutant dans ta condition secondaire si la fenêtre existe et si la boite de dialogue existe également.


Bon courage !
Étudiant en 2ème année de Licence Informatique.
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#12

Message par Ciol13 »

Oh là là là là...
je vais essayer tout ça, merci beaucoup à tous pour toutes ces explications,
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#13

Message par Ciol13 »

et maintenant que j'ai testé, et que je ne comprends pas, et bien je vais passer pour un c...
Le handle ne change pas, pourtant, si j'ouvre une fenêtre, je récupère le handle, je la ferme, je la réouvre, ce qui ne sert à rien par ailleurs, mais mettons, ben le handle n'est plus le même, tu me dis pourtant qu'il est unique

ensuite, j'essaye de bidouiller ton truc, pour que mon machin il marche, j'ai fait tout comme tu m'as dit, promis, je sais, c'est moi, mais ça ne fonctionne pas, alors voilà un bout de code tout nul qui ne sert à rien :

Code : Tout sélectionner

Run("notepad.exe")
WinActivate("Sans titre - Bloc-notes")
WinWaitActive("Sans titre - Bloc-notes")
send("essai")

#include <MsgBoxConstants.au3>

Example()

Func Example()
    ; Retrieve the window title of the active window.
    Local $sText = WinGetTitle("[ACTIVE]")

    ; Display the window title.
    MsgBox($MB_SYSTEMMODAL, "", $sText)
EndFunc   ;==>Example
ça ouvre le bloc note, ça écrit une connerie, et ça envoie une msgbox qui ne sert à rien, enfin, là elle ne sert à rien, c'est juste pour essayer de comprendre, et ben croyez moi, croyez moi pas, je n'arrive pas à la fermer! de manière automatique je parle, parce qu'avec ma main droite, et mon souriceau, je y'arrive très bien

c'est vraiment prenant, ce truc!!!

allez, merci à tous encore pour votre aide, surtout envers les boulets like me :)
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#14

Message par blacksoul305 »

Re,

alors attention. Le Handle est unique ça je l'assure, mais je n'ai jamais dit qu'il était statique. Il est unique au sens où parmi TOUTES les fenêtres ouvertes dans ton ordinateur, Windows a associé à chacune un unique handle pour pouvoir les manipuler.

Quand tu veux travailler avec des fenêtres qui peuvent potentiellement avoir le même nom, ce que tu peux faire c'est les faire apparaître les unes après les autres, changer leur nom avec "WinSetTitle" ou bien récupérer leur handle avec WinGetHandle et les stocker. Si jamais les titres posent problèmes, tu peux essayer avec les classes.

Exemple : je veux travailler sur deux bloc-notes.

Code : Tout sélectionner

Local $hdlArray[2]

Run("notepad.exe")
WinWait("[CLASS:Notepad]")
$hdlArray[0] = WinGetHandle("[CLASS:Notepad]")
WinSetTitle($hdlArray[0], "", "b1")
Run("notepad.exe")
WinWait("[CLASS:Notepad]")
$hdlArray[1] = WinGetHandle("[CLASS:Notepad]")
WinSetTitle($hdlArray[1], "", "b2")
WinClose("b2")
MsgBox(0,"","b2 fermé")
WinClose("b1")
MsgBox(0,"","b1 fermé")
Étudiant en 2ème année de Licence Informatique.
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#15

Message par Ciol13 »

allez, c'est parti, j'essaye, après tout, je ne suis pas plus mauvais qu'un autre, mais puisqu'il en est ainsi, puis je me permettre une nouvelle question? parce que j'ai du mal à saisir l'histoire des classes, et pourtant, c'est pas faute d'avoir essayé, mais je ne m'en sors pas, et les explications sont parfois un peu sommaires à mon goût, ou c'est parfois moi qui ai des difficultés à comprendre, va savoir!!!
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#16

Message par mikell »

ça envoie une msgbox (...), et ben croyez moi, croyez moi pas, je n'arrive pas à la fermer! de manière automatique je parle
Heu si je puis me permettre, prendre comme exemple une Msgbox est un très mauvais plan :mrgreen:
En effet la particularité d'une Msgbox c'est qu'elle est bloquante, autrement dit le script se met en pause tant que la bête n'a pas été manuellement fermée
Démonstration, le post #10 d'orax :

Code : Tout sélectionner

Msgbox(0, "Confirmer l’enregistrement", "texte")
If WinExists("Confirmer l’enregistrement") Then ConsoleWrite(":o)" & @CRLF)
Evidemment si la msgbox a été lancée par une autre application que le script, là ça marche
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
blacksoul305
Membre émérite
Membre émérite
Messages : 957
Enregistré le : ven. 18 mars 2011 11:49
Localisation : Au pays des programmeurs.
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#17

Message par blacksoul305 »

Regarde ce lien si tu veux des infos par rapport aux classes de fenêtres. Pour ton problème, il suffit juste de les trouver (Control Viewer) et de les utiliser (mon code).

Je pense qu'il essayait de la fermer via un autre script. 'fin j'imagine étant donné que je ne vois aucun ControlClick dans le code contenant la MsgBox. L'idée devait être de créer un script popant une MsgBox dont le nom serait exactement celui du bloc-notes pour s'entraîner à différencier les deux fenêtres aux mêmes titres et de fermer la bonne. Je suppose du moins !
Étudiant en 2ème année de Licence Informatique.
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#18

Message par Ciol13 »

'soir!!
Heu si je puis me permettre, prendre comme exemple une Msgbox est un très mauvais plan :mrgreen:
En effet la particularité d'une Msgbox c'est qu'elle est bloquante, autrement dit le script se met en pause tant que la bête n'a pas été manuellement fermée
ça, j'en convient, mais ça ne doit pas être impossible quand même, et c'est bien là que mon script de départ m...douille, enfin, c'est ce que je pensais, donc, je me suis dit que j'allais me construire un exemple débile sur le bloc note, et voir ce que ça donnait, ben je n'y arrive pas, je ne pensais pas bloquer sur un truc aussi simple, c'est là que la réalité me rattrape : je suis débutant

je continue à essayer de comprendre entre toutes les infos que vous me donnez, et les liens, j'étudie tout ça, merci
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#19

Message par mikell »

Dans ton message #13 tu pensais automatiser la fermeture d'une Msgbox créée par le même script : ça c'est pas possible
Mais comme l'explique orax tu peux très bien fermer une msgbox créée par notepad (ou autre, ou un 2ème script) en utilisant le titre de cette msgbox ou son handle - comme n'importe quelle autre fenêtre
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Ciol13
Niveau 3
Niveau 3
Messages : 31
Enregistré le : mer. 01 juin 2016 20:10
Status : Hors ligne

Re: besoin d'aide, je tourne en rond... ça n'avance pas

#20

Message par Ciol13 »

bon, je commence à comprendre, doucement, mais sûrement, il y a un sacré coup de main à prendre pour comprendre la logique du truc, mais je commence à me dépatouiller, par contre, certaines commandes restent encore floues pour moi, je n'ai pas encore regardé le lien concernant la class, mais vu l'heure, je regarderai demain, ceci étant, je vais poser ma question :

dans mon bout de script débile qui ne sert absolument à rien :

Code : Tout sélectionner

Run("notepad.exe")
WinActivate("Sans titre - Bloc-notes")
WinWaitActive("Sans titre - Bloc-notes")

Dim $DateActuel = @MDAY & "-" & @MON & "-" & @YEAR
Dim $HeureActuelle = @HOUR & ":" & @MIN & ":" & @SEC
send("le " & $DateActuel & " à " & $HeureActuelle & @CRLF)
sleep(1000)

send("!fr")
WinWaitActive("Enregistrer sous")
Sleep(500)
ControlCommand("Enregistrer sous", "", "1001", send("essai"))
ControlClick("Enregistrer sous","", "[CLASS:Button; INSTANCE:2]")
sleep(500)
WinWaitActive("Confirmer l’enregistrement")
j'utilise la fonction "send" pour aller dans le menu "fichier", puis "enregistrer sous" : send("!fr"), y'a-t-il une solution moins "carton" comme dirait blacksoul305!! J'avoue bien aimer le coup du code carton

je suis sur que la solution est en vous jeunes send("pada one")

Bonne soirée
Répondre