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

Titre de fenêtre MDI d'une application Tiers

4 réponses
Avatar
Sysdeco
bonjour,
je dois, en VB récupérer le titre d'un document d'achat d'une gestion
commerciale SAGE.(barre de titre)
je rappelle que les documents SAGE s'ouvre directement dans l'application.
ce sont des fenêtres MDI je pense.

est-ce possible de réaliser ça à l'aide des API Windows? quels sont les
meilleurs API à utiliser pour réaliser cet opération?

merci d'avance

4 réponses

Avatar
Vincent Guichard
Sysdeco a écrit :
bonjour,
je dois, en VB récupérer le titre d'un document d'achat d'une gestion
commerciale SAGE.(barre de titre)
je rappelle que les documents SAGE s'ouvre directement dans l'application.
ce sont des fenêtres MDI je pense.

est-ce possible de réaliser ça à l'aide des API Windows? quels sont les
meilleurs API à utiliser pour réaliser cet opération?

merci d'avance



Tu peux trouver les fenêtres filles d'une fenêtre à l'aide de l'API
FindWindowEx. Tu peux obtenir son titre avec l'API GetWindowText

Typiquement, tu vas:

* Obtenir l'adresse de la feuille parente (SAGE) avec un
hwndParent = FindWindow(vbNullString, nom_de_la_fenêtre_mère)

*Obtenir l'addresse de la feuille fille avec un
hwndChild = FindWindowsEx(hwndParent, hwndChild, 0&, 0&)

*Obtenir le nomù de la feuille fille avec un
ret = GetWindowTextLength(hwndChild)
childName = Space(ret)
GetWindowText hwndChild, childName, ret+1

Vincent Guichard
Avatar
Sysdeco
merci beaucoup pour cet information précieuse.

cordialement

Jérome Caux
SYSDECO

"Vincent Guichard" a écrit :

Sysdeco a écrit :
> bonjour,
> je dois, en VB récupérer le titre d'un document d'achat d'une gestion
> commerciale SAGE.(barre de titre)
> je rappelle que les documents SAGE s'ouvre directement dans l'application.
> ce sont des fenêtres MDI je pense.
>
> est-ce possible de réaliser ça à l'aide des API Windows? quels sont les
> meilleurs API à utiliser pour réaliser cet opération?
>
> merci d'avance

Tu peux trouver les fenêtres filles d'une fenêtre à l'aide de l'API
FindWindowEx. Tu peux obtenir son titre avec l'API GetWindowText

Typiquement, tu vas:

* Obtenir l'adresse de la feuille parente (SAGE) avec un
hwndParent = FindWindow(vbNullString, nom_de_la_fenêtre_mère)

*Obtenir l'addresse de la feuille fille avec un
hwndChild = FindWindowsEx(hwndParent, hwndChild, 0&, 0&)

*Obtenir le nomù de la feuille fille avec un
ret = GetWindowTextLength(hwndChild)
childName = Space(ret)
GetWindowText hwndChild, childName, ret+1

Vincent Guichard






Avatar
Sysdeco
rebonjour,
avec vos conseils, j'arrive sans problème à récupérer le Hwnd de la gestion
commerciale SAGE mais pas la fenêtre fille. la fonction findWIndowEx me
renvoie 0. j'ai peur que cela est dû au fait que les fenêtres qui s'ouvrent
depuis la gestion commerciale sage soit des fenêtres MDI.

voici mon code :
hwndParent = FindWindow(vbNullString, "Gestion Commerciale 100 pour SQL
Server - SysdecoGescom")
hwndChild = FindWindowEx(hwndParent, 0, 0&, 0&)
ret = GetWindowTextLength(hwndChild)
childName = Space(ret)
GetWindowText hwndChild, childName, ret + 1
MsgBox childName

hwndParent me donne une valeur correcte mais pas hwndChild.
aurais-je fait une erreur? y a t'il quelque chose à faire pour récupérer les
fenêtres MDi d'une application.

merci encore

Jérome CAUX
SYSDECO
"Vincent Guichard" a écrit :

Sysdeco a écrit :
> bonjour,
> je dois, en VB récupérer le titre d'un document d'achat d'une gestion
> commerciale SAGE.(barre de titre)
> je rappelle que les documents SAGE s'ouvre directement dans l'application.
> ce sont des fenêtres MDI je pense.
>
> est-ce possible de réaliser ça à l'aide des API Windows? quels sont les
> meilleurs API à utiliser pour réaliser cet opération?
>
> merci d'avance

Tu peux trouver les fenêtres filles d'une fenêtre à l'aide de l'API
FindWindowEx. Tu peux obtenir son titre avec l'API GetWindowText

Typiquement, tu vas:

* Obtenir l'adresse de la feuille parente (SAGE) avec un
hwndParent = FindWindow(vbNullString, nom_de_la_fenêtre_mère)

*Obtenir l'addresse de la feuille fille avec un
hwndChild = FindWindowsEx(hwndParent, hwndChild, 0&, 0&)

*Obtenir le nomù de la feuille fille avec un
ret = GetWindowTextLength(hwndChild)
childName = Space(ret)
GetWindowText hwndChild, childName, ret+1

Vincent Guichard






Avatar
Vincent Guichard
Sysdeco a écrit :
rebonjour,
avec vos conseils, j'arrive sans problème à récupérer le Hwnd de la gestion
commerciale SAGE mais pas la fenêtre fille. la fonction findWIndowEx me
renvoie 0. j'ai peur que cela est dû au fait que les fenêtres qui s'ouvrent
depuis la gestion commerciale sage soit des fenêtres MDI.

voici mon code :
hwndParent = FindWindow(vbNullString, "Gestion Commerciale 100 pour SQL
Server - SysdecoGescom")
hwndChild = FindWindowEx(hwndParent, 0, 0&, 0&)
ret = GetWindowTextLength(hwndChild)
childName = Space(ret)
GetWindowText hwndChild, childName, ret + 1
MsgBox childName

hwndParent me donne une valeur correcte mais pas hwndChild.
aurais-je fait une erreur? y a t'il quelque chose à faire pour récupérer les
fenêtres MDi d'une application.

merci encore




Regarde avec un outil du type de Spy++ si il existe bien une relation
Parent/Enfant entre les deux fenêtres.

Sinon, le code que j'ai donné ne cherche que la première fenêtre, il est
peut-être possible qu'il y en ait d'autres, et que la bonne fenêtre soit
la 4 ou 5, mais c'est peu probable si le premier appel donne 0;

Vincent Guichard