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 ???
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
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
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
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
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
>
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
> 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
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
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
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