Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

récupérer la propriété Text de n'importe quel controle

1 réponse
Avatar
Mickael
Bonjour,

J'aimerai pouvoir récupérer la propriété Text de n'importe quel controle
lorsque je passe la souris dessus.
Quand je parle de "n'importe quel" cela veut dire à la fois les controles de
mon application mais surtout le texte des controles des autres applications.

En fait, j'aimerai faire un logiciel d'aide aux malvoyants. Ils pourraient
simplement passer la souris sur un bouton par exemple pour "entendre" le
texte affiché sur le bouton.

J'ai essayé avec l'API GetWindowTitle mais elle ne récupère pas tous les
textes ...

Voilà, si vous avez des pistes ...

D'avance merci,

Mickael

1 réponse

Avatar
Alain CROS
Bonjour.

Utiliser le message WM_GETTEXT.

WM_GETTEXT

wParam = cchTextMax
Nombre de caractères à copier.

lParam = lpszText
Adresse de l'emplacement mémoire ou copier le texte.

Pour un control edit, le texte copié est le contenu du control. Pour un combo box, le texte est le contenu de l'edit control ou
texte statique du combo box. Pour un bouton, le texte est le nom du bouton. Pour les autres fenêtres, le texte est le titre de la
fenêtre. Pour copier le texte d'un item d'un list box, utiliser le message LB_GETTEXT.

Quand un message WM_GETTEXT est envoyé a un control static de style SS_ICON, le handle de l'icon est retourné dans les quatre
premiers bytes de l'emplacement mémoire pointé par lpszText. Ceci est vrai seulement si le message WM_SETTEXT a été utilisé pour
établir l'icon.

Exemple :

Cet exemple affiche dans une boite de message le titre de la fenêtre active et le nombre de caractères qu'il comporte.

Private Declare Function SendMessage& Lib "user32" _
Alias "SendMessageA" (ByVal hwnd&, ByVal wMsg&, ByVal wParam&, lParam As Any)

Private Declare Function GetActiveWindow& Lib "user32" ()

Sub WindowCaptionLength()
Const WM_GETTEXT& = &HD
Dim LeTitre$, NbChar&
LeTitre = Space(200&)
NbChar = SendMessage(GetActiveWindow, WM_GETTEXT, 200&, ByVal LeTitre)
MsgBox "Le titre de la fenêtre active est :" & vbNewLine & Left$(LeTitre, _
NbChar) & vbNewLine & "Il comporte " & NbChar & " caractères."
End Sub

Alain CROS

"Mickael" a écrit dans le message de news:
Bonjour,

J'aimerai pouvoir récupérer la propriété Text de n'importe quel controle
lorsque je passe la souris dessus.
Quand je parle de "n'importe quel" cela veut dire à la fois les controles de
mon application mais surtout le texte des controles des autres applications.

En fait, j'aimerai faire un logiciel d'aide aux malvoyants. Ils pourraient
simplement passer la souris sur un bouton par exemple pour "entendre" le
texte affiché sur le bouton.

J'ai essayé avec l'API GetWindowTitle mais elle ne récupère pas tous les
textes ...

Voilà, si vous avez des pistes ...

D'avance merci,

Mickael