Modifier l'apparence d'une Msgbox

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Accessvision
Niveau 3
Niveau 3
Messages : 42
Enregistré le : mar. 11 oct. 2022 16:14
Status : Hors ligne

Modifier l'apparence d'une Msgbox

#1

Message par Accessvision »

Bonjour à tous,
Aujourd'hui j'aurai besoin encore de votre aide.
Je fais des scripts en autoit lpour des solutions ppour personne non voyante.
Souvent, je dois utiliser des Msgbox pour annoncer des messages, mais avec l'affichage par défaut, le texte contenu dans la fenêtre ne peut pas être lu par nos synthèses vocales.
Comme je ne m'y connais pas à fond dans la programmation, en me renseignant on m'a dit que le problème venait peut-être d'Autoit car des langages de programmations qui utilisent le système de msbbox natif de windows ne pposait pas ce problème.
Je cherche donc à savoir si autoit permet d'utiliser ce système pour fairre des fenêtrres?
J'ai vu les UDF winapi dans le dossier include mais je n'ai pas trouvé dans ces fichiers des descriptifs des fonctionnalités et ce qu'elles font.
Pourriez-vous m'aider et me dire si cela est possible?
Merci d'avance pour votre aide!!!
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Modifier l'apparence d'une Msgbox

#2

Message par walkson »

Bonjour
Une Msgbox est une boite de dialogue Windows de class #32770, donc le problème ne vient pas d'Autoit
Il ne faut pas oublier que Msgbox est bloquant et en fonction de votre code, celui-ci est en attente
Regardez et modifiez le flag (première valeur) en $MB_SYSTEMMODAL ou $MB_TASKMODAL ou autres à tout hasard (voir l'aide)
Je vous mets un petit code qui utilise différentes boites à message faciles à utiliser

Code : Tout sélectionner

Form()
Sleep(1000)
ToolTip("message tooltip",150,300,"titre")
Sleep(1000)
SplashTextOn("Title", "Le message SplashText.", -1, 200, -1, 100, 4, "", 24)
Sleep(1000)
MsgBox(4096,"titre","message msgbox")

Func Form()
Global $Form1 = GUICreate("Titre", 235, 101, 214, 689)
Global $Label1 = GUICtrlCreateLabel("Message label", 16, 16, 200, 50)
GUISetState(@SW_SHOW)
EndFunc
La fermeture de Msgbox entraîne la fermeture de toutes les fenêtres
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Accessvision
Niveau 3
Niveau 3
Messages : 42
Enregistré le : mar. 11 oct. 2022 16:14
Status : Hors ligne

Re: Modifier l'apparence d'une Msgbox

#3

Message par Accessvision »

Rebonjour,
Bon, alors il faudra que j'explore de plus prêt ce problème car le flag systemmodal et taskmodal créent le même problème.
Le code SplashTextOn lit le message, il me faudrait la même chose mais où les utilisateurs puissent cliquer sur oui/non et qui ne disparaît pas.
Ou alors, y a-t-il un flag qui crée un champ en lecture seul avec un bouton oui et non où je peux metre mon message?
Merci
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1020
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: Modifier l'apparence d'une Msgbox  

#4

Message par walkson »

A ma connaissance, on ne peut pas mettre des boutons sur SplashTextOn
La solution la plus simple serait celle-là

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
Opt("GUIOnEventMode", 1)
Global $Form2
Global $Form1 = GUICreate("Form1", 615, 438, 192, 124)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
Global $Button1 = GUICtrlCreateButton("Message", 224, 344, 105, 41)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)


While 1
 Sleep(100)
WEnd

Func Button1Click()
_Main()
EndFunc
Func Form1Close()
Exit
EndFunc



Func _Main()
	Local $idYes, $idNo

	$Form2 = GUICreate("Custom MsgBox", 210, 80)

	GUICtrlCreateLabel("MESSAGE" & @CRLF & "Please click a button!", 10, 10)
	$idYes = GUICtrlCreateButton("Yes", 10, 50, 50, 20)
	GUICtrlSetOnEvent($idYes, "OnYes")
	$idNo = GUICtrlCreateButton("No", 80, 50, 50, 20)
	GUICtrlSetOnEvent($idNo, "OnNo")

	GUISetOnEvent($GUI_EVENT_CLOSE, "OnExit")

	GUISetState() ; display the GUI
EndFunc   ;==>_Main

; --------------- Functions ---------------
Func OnYes()
	MsgBox($MB_SYSTEMMODAL, "You clicked on", "Yes")
	OnExit()
EndFunc   ;==>OnYes

Func OnNo()
	MsgBox($MB_SYSTEMMODAL, "You clicked on", "No")
	OnExit()
EndFunc   ;==>OnNo

Func OnExit()
	GUIDelete($Form2)
EndFunc   ;==>OnExit
après il y a _WinAPI_MessageBoxIndirect($tMBP) mais c'est toujours class #32770 donc :?:
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Accessvision
Niveau 3
Niveau 3
Messages : 42
Enregistré le : mar. 11 oct. 2022 16:14
Status : Hors ligne

Re: Modifier l'apparence d'une Msgbox

#5

Message par Accessvision »

Bonjour,
Les codes proposés provoquent le même pproblème j'ai j'ai trouvé une solution alternative.
Tout d'abord j'ai fait un SplashTextOn qui annonce le texte, puis après j'ai fait une Msgbox où je mets mes boutons. Ça permet d'être au courant du message et de pouvoir cliqué sur les boutons après.
Merci pour votre aide qui m'a permis de découvrir la fonction SplashTextOn.
Cordialement
Répondre