Bonjour,
je cherche à empêcher lors de l'utilisation de l'ActiveX Navigateur Web l'ouverture de IE pour les liens en _blank
J'ai trouvé pour cela cet API :
// proédure locale dans ma fenetre contenant l'activex
PROCEDURE mousehookproc(ncode est un entier SUR 4 octets, wparam est un entier SUR 4 octets, lparam est un entier SUR 4 octets)
QUAND EXCEPTION
RENVOYER API("user32","CallNextHookEx",hook ,ncode, wparam, lparam)
FIN
// cette procédure permet d'inhiber l'ouverture d'une autre fenêtre d'internet explorer et
// permet donc de continuer à afficher dans la fenêtre Windev
SI HTLM_RECH <> Null ALORS
SI ncode>=0 ALORS
SI wparam=0x202 ALORS
winclass est une chaîne ASCIIZ DE 128
API("user32","GetClassNameA",API("user32","GetFocus"),&winclass,128)
SI winclass="Internet Explorer_Server" ALORS
txtr est un objet Automation dynamique =HTLM_RECH>>document>>activeElement
SI txtr<>Null ALORS
SI txtr>>tagName = "FRAME" ALORS
txtf est un objet Automation dynamique = HTLM_RECH>>document>>frames(txtr>>name)>>document>>activeElement
SI txtf>>tagName="A" ALORS
SI txtf>>target = "_blank" OU txtf>>target="droite" ALORS
txtf>>target = "_parent"
FIN
FIN // si tagname=a
Libérer txtf
SINON
SI txtr>>tagName="A" ALORS
SI txtr>>target = "_blank" OU txtr>>target="droite" ALORS
txtr>>target = "_parent"
FIN
FIN
FIN // si tagname=frame
FIN // si txtr<>null
Libérer txtr
FIN // si winclass
FIN // si wparam=0x202
FIN // si ncode>=0
FIN
RENVOYER API("user32","CallNextHookEx",hook ,ncode, wparam, lparam)
J'ai bien initialisé le hook :
// Dans les déclarations globales de la fenetre :
hook est un entier = API("user32","SetWindowsHookExA", 7 , &mousehookproc , 0 , API("kernel32","GetCurrentThreadId") )
J'ai un champ activeX nommé HTLM_RECH, mais j'ai toujours la même erreur (si je met l'exception en commentaire) :
Erreur A la ligne 9 du traitement PROCEDURE LOCALE mousehookproc.
Le champ HTLM_RECH est inconnu.
----- Informations techniques -----
Projet : XXX
Appel WL :
Traitement DE 'PROCEDURE LOCALE mousehookproc' (EXPRESS_FEN_NAVIGATEUR.PROCEDURE.mousehookproc), ligne 9, thread 0
Que s'est-il passé ?
Le champ HTLM_RECH est inconnu.
Code Erreur : 1017
Niveau : Erreur fatale (EL_FATAL)
Dump DE l'Erreur du module 'WD150VM.DLL' (15.00Oy EXPRESS).
Identifiant des informations détaillées (.err) : 1017
Informations supplémentaires :
EIT_PILEWL :
PROCEDURE LOCALE mousehookproc (EXPRESS_FEN_NAVIGATEUR.PROCEDURE.mousehookproc), ligne 9
EIT_DATEHEURE : 16/01/2011 22:44:49
Merci d'avance si quelqu'un peut m'aider