Message de rapport:
 

Champ Inconnu dans une api "SetWindowsHookExA"But : Remplacer les _blank du web broswer (activeX)

Sujet: Champ Inconnu dans une api "SetWindowsHookExA"But : Remplacer les _blank du web broswer (activeX)
par thetissot sur 16/1/2011 23:43:28

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
Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2