problème avec fonction send
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 3
- Messages : 42
- Enregistré le : mar. 11 oct. 2022 16:14
- Contact :
- Status : Hors ligne
Re: problème avec fonction send
Oui, si j’ai bien compris la question, le focus va bien dans cette fenêtre là, est-ce que c’est bien ça ?
- walkson
- Modérateur
- Messages : 1017
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: problème avec fonction send
Bonjour,
Le problème est que la fenêtre "#32770" est bloquante et donc le code attend sa fermeture. Le ControlClick() ne peut pas agir
Il faut lancer votre programme à partir d'un autre code.
Autre problème ControlClick() a besoin du handle de la fenêtre. Voici ce que je vous propose, dans un code lancé manuellement
Vous lancez ce code depuis scite
Il récupère le handle et agit sur la fenêtre. Biensûr le code est à adapter à vos besoins
Le problème est que la fenêtre "#32770" est bloquante et donc le code attend sa fermeture. Le ControlClick() ne peut pas agir
Il faut lancer votre programme à partir d'un autre code.
Autre problème ControlClick() a besoin du handle de la fenêtre. Voici ce que je vous propose, dans un code lancé manuellement
ShellExecute("C:\777")
qui devra être votre programme. "C:\777" n'existant pas dans le cas présent, une fenêtre "#32770" s'ouvriraVous lancez ce code depuis scite
Code : Tout sélectionner
#include <WinAPISysWin.au3>
$hnd = _WinAPI_FindWindow ( "#32770", "C:\777" )
ConsoleWrite(">> " & $hnd & @CRLF)
ControlFocus ( $hnd,"","Button1" )
ControlClick($hnd,"","Button1")
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
-
- Niveau 3
- Messages : 42
- Enregistré le : mar. 11 oct. 2022 16:14
- Contact :
- Status : Hors ligne
Re: problème avec fonction send
Bonjour,
"c:\777" correspond à quel programme? car le programme qui appartient à l'extension est déjà lancé vu que c'est mon lecteur d'écran.
Ai-je mal compris?
"c:\777" correspond à quel programme? car le programme qui appartient à l'extension est déjà lancé vu que c'est mon lecteur d'écran.
Ai-je mal compris?
- walkson
- Modérateur
- Messages : 1017
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: problème avec fonction send
"c:\777" ne correspond à rien. Il permet d'ouvrir la fenêtre d’alerte "#32770" qui signale que le programme n'existe pas
Quand vous lancez votre programme shellexecute("include\webaccess.nvda-addon") vous avez une fenêtre d'alerte, c'est ce que j'ai reproduit avec ShellExecute("C:\777")
Il faut donc lancer d'un coté shellexecute("include\webaccess.nvda-addon") et de l'autre le code qui agit sur cette fenêtre d'alerte en modifiant "c:\777" par le titre de votre fenêtre d’alerte "#32770" (sans faire d'erreur)
Quand vous lancez votre programme shellexecute("include\webaccess.nvda-addon") vous avez une fenêtre d'alerte, c'est ce que j'ai reproduit avec ShellExecute("C:\777")
Il faut donc lancer d'un coté shellexecute("include\webaccess.nvda-addon") et de l'autre le code qui agit sur cette fenêtre d'alerte en modifiant "c:\777" par le titre de votre fenêtre d’alerte "#32770" (sans faire d'erreur)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
-
- Niveau 3
- Messages : 42
- Enregistré le : mar. 11 oct. 2022 16:14
- Contact :
- Status : Hors ligne
Re: problème avec fonction send
Rebonjour,
Voici le code:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.16.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include <WinAPISysWin.au3>
$hnd = _WinAPI_FindWindow ( "#32770", "Installation de l'extension" )
ConsoleWrite(">> " & $hnd & @CRLF)
ControlFocus ( $hnd,"","Button3" )
ControlClick($hnd,"","Button3")
j'ai lancé la fenêtre d'installation manuellement juste pour voir si ça marchait, et pour rester fidèle au post, ça ne marche toujours pas.
Je pense qu'à un moment il n'y aura plus de solution.
Voici le code:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.16.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include <WinAPISysWin.au3>
$hnd = _WinAPI_FindWindow ( "#32770", "Installation de l'extension" )
ConsoleWrite(">> " & $hnd & @CRLF)
ControlFocus ( $hnd,"","Button3" )
ControlClick($hnd,"","Button3")
j'ai lancé la fenêtre d'installation manuellement juste pour voir si ça marchait, et pour rester fidèle au post, ça ne marche toujours pas.
Je pense qu'à un moment il n'y aura plus de solution.
- walkson
- Modérateur
- Messages : 1017
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: problème avec fonction send
Je suis étonné car j'ai testé sur différents programmes sans problème
Essayez cela
Vous compilez
Lancez BBB.exe pour vérifier que webaccess.nvda-addon fonctionne puis tout fermer
Vous exécutez le code suivant
Dans la console vous devez avoir le handle de "#32770" et un message (MsgBox()) vous donnant le nom de la classe et le titre de la fenêtre
Si pas de résultat, essayez avec l'antivirus désactivé, le problème peut venir de là
N'oubliez pas, exe et code dans le même dossier et bien-sûr webaccess.nvda-addon en marche quand vous lancez le code
Essayez cela
Vous compilez
shellexecute("include\webaccess.nvda-addon")
dans le même dossier que le code et vous nommez le EXE en BBB.exeLancez BBB.exe pour vérifier que webaccess.nvda-addon fonctionne puis tout fermer
Vous exécutez le code suivant
Code : Tout sélectionner
#include <WinAPISysWin.au3>
ShellExecute(@ScriptDir & "\BBB.exe")
Sleep(1000)
$hnd = _WinAPI_FindWindow ( "#32770", "Installation de l'extension" )
ConsoleWrite("<< " & $hnd & @CRLF)
MsgBox(0,"class",_WinAPI_GetClassName ( $hnd ) & @CRLF & _WinAPI_GetWindowText($hnd) ,2)
ControlFocus ( $hnd,"","Button3" )
Sleep(2000)
ControlClick($hnd,"","Button3")
Si pas de résultat, essayez avec l'antivirus désactivé, le problème peut venir de là
N'oubliez pas, exe et code dans le même dossier et bien-sûr webaccess.nvda-addon en marche quand vous lancez le code
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
- walkson
- Modérateur
- Messages : 1017
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: problème avec fonction send
Après il y a cette solution qui donne toutes les fenêtres visibles dans un tableau
Il faut rechercher "#32770" (col 1) et le titre de la fenêtre (col 2) qui doivent être forcément là.....
Code : Tout sélectionner
#include <WinAPISysWin.au3>
#include <Array.au3>
$array = _WinAPI_EnumWindows()
_ArrayColInsert($array, 2)
For $i = 1 To $array[0][0]
$array[$i][2] = _WinAPI_GetWindowText($array[$i][0])
Next
_ArrayDisplay($array)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
-
- Niveau 3
- Messages : 42
- Enregistré le : mar. 11 oct. 2022 16:14
- Contact :
- Status : Hors ligne
Re: problème avec fonction send
Bonjour,
Quand je compile BBB.exe l'installation de webaccess.nvda-addon se lance bien.
Mais le deuxième script ne fonctionne pas.
Quand je lance le script pour lister les fenêtres actives, la fenêtre d'installation apparaît bien.
D'où peut venir le problème?
Quand je compile BBB.exe l'installation de webaccess.nvda-addon se lance bien.
Mais le deuxième script ne fonctionne pas.
Quand je lance le script pour lister les fenêtres actives, la fenêtre d'installation apparaît bien.
D'où peut venir le problème?
-
- Niveau 3
- Messages : 42
- Enregistré le : mar. 11 oct. 2022 16:14
- Contact :
- Status : Hors ligne
Re: problème avec fonction send
Rectification de mon message précédant, dans le code du premier message, la boite de dialogue s'ouvre bien avec la classe de la fenêtre mais n'execute pas l'action pour cliquer.
- mikell
- Modérateur
- Messages : 6272
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: problème avec fonction send
Je n'ai pas tout lu mais apparemment, comme walkson l'a dit la fenêtre est bloquante et empêche l'exécution de la suite du script, donc il faut l'ouvrir dans un processus différent
Exemple
Exemple
; ça marche pas
Msgbox(0,"test1", "test1")
Sleep(100)
WinActivate("test1")
ControlClick("test1", "", "[CLASSNN:Button1]")
; ça marche
Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''test2'', ''test2'')"')
Sleep(100)
WinActivate("test2")
ControlClick("test2", "", "[CLASSNN:Button1]")
Msgbox(0,"ok", "ok")
Msgbox(0,"test1", "test1")
Sleep(100)
WinActivate("test1")
ControlClick("test1", "", "[CLASSNN:Button1]")
; ça marche
Run(@AutoItExe & ' /AutoIt3ExecuteLine "MsgBox(0, ''test2'', ''test2'')"')
Sleep(100)
WinActivate("test2")
ControlClick("test2", "", "[CLASSNN:Button1]")
Msgbox(0,"ok", "ok")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
-
- Niveau 3
- Messages : 42
- Enregistré le : mar. 11 oct. 2022 16:14
- Contact :
- Status : Hors ligne
Re: problème avec fonction send
Bonjour,
Étant débutant, je n'ai pas compris votre code.
Pourriez-vous me l'expliquer?
Étant débutant, je n'ai pas compris votre code.
Pourriez-vous me l'expliquer?
- mikell
- Modérateur
- Messages : 6272
- Enregistré le : dim. 29 mai 2011 17:32
- Localisation : Deep Cévennes
- Status : Hors ligne
Re: problème avec fonction send
Mais bien sûr 
L'instruction "AutoIt3ExecuteLine" permet d'exécuter en ligne de commande une (et une seule) ligne de code dans un processus AutoIt distinct. Un peu comme lancer un 2ème script qui ne contiendrait qu'une ligne
Et pour lancer l'ouverture de ta fenêtre une seule ligne de code suffit...
Je peux pas tester, mais j'imagine que dans ton cas ça doit être quelquechose comme ça (à essayer)
Si ça ne marche pas, essayer de mettre le chemin complet de webaccess.nvda-addon dans le shellexecute

L'instruction "AutoIt3ExecuteLine" permet d'exécuter en ligne de commande une (et une seule) ligne de code dans un processus AutoIt distinct. Un peu comme lancer un 2ème script qui ne contiendrait qu'une ligne
Et pour lancer l'ouverture de ta fenêtre une seule ligne de code suffit...
Je peux pas tester, mais j'imagine que dans ton cas ça doit être quelquechose comme ça (à essayer)
Si ça ne marche pas, essayer de mettre le chemin complet de webaccess.nvda-addon dans le shellexecute
Code : Tout sélectionner
Run(@AutoItExe & ' /AutoIt3ExecuteLine "shellexecute(""include\webaccess.nvda-addon"")"')
Sleep(1000)
WinActivate("Installation")
ControlClick("Installation", "", "[CLASSNN:Button3]")
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
-
- Niveau 3
- Messages : 42
- Enregistré le : mar. 11 oct. 2022 16:14
- Contact :
- Status : Hors ligne
Re: problème avec fonction send
Je viens de tester le code mais ça ne marche toujours pas.
La fenêtre d'installation s'ouvre mais il n'y a pas l'action de clique.
Avez-vous encore des solutions?
La fenêtre d'installation s'ouvre mais il n'y a pas l'action de clique.
Avez-vous encore des solutions?
-
- Niveau 3
- Messages : 42
- Enregistré le : mar. 11 oct. 2022 16:14
- Contact :
- Status : Hors ligne
Re: problème avec fonction send
Bonsoir,
En alternative, j'ai vu que je pouvais convertir mon fichier nvda-addon en zip et l'extraire directement dans un répertoir.
J'ai téléchargé l'UDF 7ZipöUDF mais mon extraction ne fonctionne pas.
Voici mon code:
Y a-t-il un problème dans la syntaxe?
Ou l'UDF est-elle plus mise à jour?
Merci pour la suite des propositions
En alternative, j'ai vu que je pouvais convertir mon fichier nvda-addon en zip et l'extraire directement dans un répertoir.
J'ai téléchargé l'UDF 7ZipöUDF mais mon extraction ne fonctionne pas.
Voici mon code:
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.16.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include "7zip\7Zip.au3"
;$extract = _7ZIPExtract(0, "include\webaccess.zip", @AppDataDir & "\nvda2\addons")
$retResult = _7ZIPExtract(0, "include\webaccess.zip", @AppDataDir & "\nvda2\addons")
If @error = 0 Then
MsgBox(64, "_7ZIPExtractEx", $retResult)
Else
MsgBox(64, "_7ZIPExtractEx", "Erreur lors de l'extraction de l'archive")
EndIf
$dir = @AppDataDir & "\nvda2\webModules"
DirCreate($dir)
;msgbox(0,"test","le dossier a été créé à"&$dir)
FileCopy ("include\mbn.json", $dir)
AutoIt Version: 3.3.16.1
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
; Script Start - Add your code below here
#include "7zip\7Zip.au3"
;$extract = _7ZIPExtract(0, "include\webaccess.zip", @AppDataDir & "\nvda2\addons")
$retResult = _7ZIPExtract(0, "include\webaccess.zip", @AppDataDir & "\nvda2\addons")
If @error = 0 Then
MsgBox(64, "_7ZIPExtractEx", $retResult)
Else
MsgBox(64, "_7ZIPExtractEx", "Erreur lors de l'extraction de l'archive")
EndIf
$dir = @AppDataDir & "\nvda2\webModules"
DirCreate($dir)
;msgbox(0,"test","le dossier a été créé à"&$dir)
FileCopy ("include\mbn.json", $dir)
Ou l'UDF est-elle plus mise à jour?
Merci pour la suite des propositions
- TommyDDR
- Modérateur
- Messages : 2067
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: problème avec fonction send
Merci de mettre votre code entre les balises :
[ code_au3] et [ /code_au3]
[ code_au3] et [ /code_au3]
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679