PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → PB avec Winword
PB avec Winword
Débuté par Djebel, 14 oct. 2005 01:23 - 2 réponses
Posté le 14 octobre 2005 - 01:23
Slt, je reviens encore avec mes PB de Handle...voici mon problème

J'ouvre winword avec LanceAppliAssocié et je récupère handle. Mais pour winword, il s'git du Handle de la fenetre "mère". Lorsque deux instance de winword sont lancées, il faut fermer les deux fenetre pour que la fonction HandleValide indique que winword est fermé. Ceci est du au fait qu'il faut récupérer le handle de la fenetre contenant le texte et non la fenetre principale.
Avec l'API : AppelDLL32("user32", "WindowFromPoint", pt:x, pt:y) on récupère tous le handle de la fenetre à la position de la souris.

D'ou mon idée, puisque je ne trouve pas d'autres moyens efficaces, de déplacer la souris sur la fenetre lancée et de temporiser avec Multitache, le temps que le fichier word s'ouvre et ainsi récupérer le handle.

Tout cela me parait bien compliqué et je ne maitrise pas du tout les API. Alors y-a-t-il une vrai solution ?

Merci.

Djebel
Posté le 16 octobre 2005 - 01:07
Bonjour,

J'aurais bien une autre solution à te proposer mais ca dépend de ce que tu veux faire exactement.
En fait, il y a un exemple livré avec Windev 9 (Pilotage de word) qui passe par la couche OLE Automation. Il utilise une classe que tu peux facilement réutiliser...

En espérant t'avoir aidé (sinon il nous faudrait un peu plus de précision sur ce que tu veux faire)

Marc
Posté le 16 octobre 2005 - 14:53
Merci Marc pour ton aide, mais voici ce que je cherche à faire:
Je souhaite récupérer le temps passé par des users sur Word et Excel. Pour cela, je lance les applis grace à LanceAppliAssocié à partir d'un menu. Je récupère le handle des applis lancé et un timer vérifie régulièrement si le handle est toujours valise (SysHandleValide). Le problème que je constate:
- Au lieu de récupérer le Handle de la zone client de Winword, je récupère celui de la fenetre. Ce qui a pour conséquences que s'il y 2 instances ouvertes de Word ou Excel, il faut que les deux instances soient fermées pour que SysHandleValid renvoie "faux".

Il y a une API qui permet de récupérer le Handle des fenetres client. Il s'agir de "WindowFromPoint" de la bibliothèque User32, mais elle le fait à partir de la position de la souris. Ce qui ne me convient pas, à moins de déplacer la souris aux coordonnées de la zone client. Ce que je n'arrive pas à faire correctement.

j'espère que ces explication sont cette fois un peu plus claires.

Djebel