récupérer la propriété Text de n'importe quel controle
1 réponse
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 ...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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" <Mickael@discussions.microsoft.com> a écrit dans le message de news: 2F3AA15F-9535-4435-8D72-0287B1916DA2@microsoft.com...
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 ...
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 ...