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

Fenetres windev

4 réponses
Avatar
I.G.LOG
Bonjour,
J'essai d'adapter l'exemple "pilotage word" de la lst 76 sous windev 12.
Mon problème est que quand j'execute le serveur OLE, la fenetre word s'ouvre
SOUS les fenetres de l'application windev; ce que je ne veux pas bien sur.
Je cherche donc un moyen de rendre invisible (ou hors ecran) TOUTES les
fenetres de l'application windev sauf celle en cours (qui permet de piloter
word). Mais je ne trouve pas de fonction permettant de retourner ces
fenetres; il y a bien NombreFenetre() qui renvoi le nombre de fenetres
windev ouvertes, mais qui ne me sert pas a grand chose pour gerer leur etat.
Connaissez vous un moyen de resoudre ce probleme, ou eventuellement de
connaitre l'instance de la fenetre word (ca me permettrait peut-etre de la
placer au dessus)

Voici le bout de code qui ouvre la fenetre word

...
// si Word n'est pas déjà alloué
SI :m_oApplication = Null ALORS
// Y a t il déjà un Word de lancé ?
:m_oApplication = ObjetActif("Word.Application")
SI :m_oApplication = Null ALORS
// Il n'y avait aucun Word déjà ouvert, on en alloue un
:m_oApplication = allouer un objet OLE "Word.Application"
FIN
FIN

// Word visible
:m_oApplication>>Visible = Vrai // Comment placer la fenetre au
dessus des fenetres windev ???


Merci pour vos reponses

4 réponses

Avatar
I.G.LOG
Une précision:
J'arrive a connaitre le handle de la fenetre word grace au code suivant:

// Word visible
:m_oApplication>>Visible = Vrai

// Handle de la fenetre Word
:m_Handle = SysFenActive()

mais je en trouve pas de focntion permettant de la placer au dessus !!
J'ai essaye avec SysDonneFocus(:m_Handle) sans resultat.

Encore merci
Avatar
Romain PETIT
I.G.LOG a émis l'idée suivante :
Une précision:
J'arrive a connaitre le handle de la fenetre word grace au code suivant:

// Word visible
:m_oApplication>>Visible = Vrai

// Handle de la fenetre Word
:m_Handle = SysFenActive()

mais je en trouve pas de focntion permettant de la placer au dessus !!
J'ai essaye avec SysDonneFocus(:m_Handle) sans resultat.

Encore merci



SysFenAffiche ?
Sinon, il faut utiliser l'API :
http://groups.google.fr/group/fr.comp.developpement.agl.windev/msg/cb8642f257fccc20?hl=fr

A+

--
Romain PETIT
contact : http://cerbermail.com/?O16kfXOFcq
+-+ posté sur Usenet avec MesNews et non depuis un forum web +-+
news:fr.comp.developpement.agl.windev
http://www.mesnews.net/
http://fr.wikipedia.org/wiki/Newsgroup
Avatar
I.G.LOG
>
SysFenAffiche ?
Sinon, il faut utiliser l'API :
http://groups.google.fr/group/fr.comp.developpement.agl.windev/msg/cb8642f257fccc20?hl=fr




Bonjour,
Je n'ai pas trouvé de constante permettant de passer la fenetre au premier
plan avec SysFenAffiche().
Je m'oriente donc sur l'API.
Merci de m'avoir donné le lien, je vais voir ça
Avatar
I.G.LOG
apres plusieurs essais, je n'ai pas reussi avec les api; je pense que ca
vient du fait que l'appli n'est pas developpée en mdi.
J'ai malgrés tout reussi en jonglant avec EnumereElement() avec le code
suivant:

PROCEDURE ListeFenetresOuvertes()

lFen est une chaîne = EnumèreElément(enumFenêtre)
lRet est une chaîne

// Parcours de toutes les fenêtres actives
TANTQUE lFen <> ""
// Passage à la fenêtre suivante
lFen = EnumèreElément()
SI FenEtat(lFen) = Actif ALORS
IF lRet <> "" ALORS
lRet += TAB
FIN
lRet += lFen
FIN
FIN
RENVOYER lRet

PROCEDURE EtatFenetres(pEtat)

x est un entier
lFen est une chaîne

BOUCLE
x++
lFen = ExtraitChaîne(gFenOuv,x)
SI lFen = "" OU lFen = EOT ALORS SORTIR
SI lFen = FenEnExécution() ALORS CONTINUER
FenEtat(lFen,pEtat)
FIN
RETOUR

Ca ne me plait pas trop puisque EnumereElement() retourne toutes les
fenetres du projet et NombreFenetre() ne permet pas de connaitre les
fenetres ouvertes.
Mais ça fonctionne comme ça.
En tous cas merci pour ta réponse