24/04/2024
Windev et les Api WindowsNb de visiteurs en ligne : 1
>> Introduction << >> Codes et Forum << >> Download <<


Nombre de messages : 24 page : 1 sur 3Page SuivanteDernière Page
Rubrique : 2 - Windev 7x       Sujet : Toujours à propos de Activex du navigateur I.Explorer
Auteur Message
 GP Posté le : 23/06/2003 16:29:28


Me revoilà JL,

Lorsque j'utilise mon navigateur aménagé ( grâce à toi JL ) à partir de WDNavigue de Windev je voudrais pouvoir y afficher toutes les pages : or il arrive, en cliquant sur un lien, que Internet Explorer démarre parce qu'il y  avait par exemple un TARGET = _BLANK dans le lien.

Ma question est donc la suivante :  
Est-il possible d'inhiber ce démarrage d'Internet Explorer afin que ma navigation soit UNIQUEMENT dans mon navigateur ?  

 °¨¨ JL ¨¨° Posté le : 23/06/2003 17:47:53


Re,

M'en vais finir par créer un forum spécial Activex IE  

Peut-être pourrais tu rechercher et supprimer le target=blank du code de la page ??

Sinon, il faut récupérer les clicks sur les liens, en vérifier le target et le modifier le cas échéant ou tout simplement changer le href de ton activex avec le lien cliqué.

A+

 GP Posté le : 23/06/2003 19:02:27


    


>>>Peut-être pourrais tu rechercher et supprimer le target=blank du code de la page ??
Je sais le trouver avec :
WTarget = ActiveX_Web>>document>>body>>innerHTML
Ppp=Position(WTarget,"_blank")  
Mais il peut y avoir des dizaines de target dans un menu
Comment tous les supprimer dans la page affichée car à ce moment je ne sais quel lien sera cliqué ?


>> Sinon, il faut récupérer les clicks sur les liens, en vérifier le target et le modifier le cas échéant
Cette solution me parait la plus logique mais ...
Quel est l'évènement de l'activex qui est susceptible d'intercepter le target AVANT que internet explorer soit lancé  et comment récupérer le target et le modifier ?


>> ou tout simplement changer le href de ton activex avec le lien cliqué.
Les href des liens ne contiennent que l'url : celle-ci ne me semble pas remise en cause  


J'ai cherché ( mais n'ai pas trouvé )  une option quelconque de l'activex qui permettrait de ne pas tenir compte du target : l'existence de cette option me parait logique car à quoi servirai d'utiliser le webbrowser si chaque lien cliqué démarre systématiquement Internet Explorer : dans ce cas autant utiliser LanceApplicationAssociée

Mais là je rêve peut-être  

En résumé dans tous ces cas de toute façon je ne sais pas faire  

Alors encore une fois merci d'avance si tu as une solution    

 °¨¨ JL ¨¨° Posté le : 23/06/2003 20:04:05


// déclarations globales de la fenêtre

hook est un entier = API("user32","SetWindowsHookExA", 7 , &mousehookproc , 0 ,
API("kernel32","GetCurrentThreadId") )


// fermeture de la fenêtre

API("user32","UnhookWindowsHookEx",hook)


//Procédure mousehookproc

PROCEDURE mousehookproc(ncode est un entier sur 4 octets, wparam est un entier sur 4 octets, lparam
est un entier sur 4 octets)

SI ActiveX1<>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 = ActiveX1>>document>>activeElement
        SI txtr<>Null ALORS
          SI txtr>>tagName = "FRAME" ALORS
            txtf est un objet automation dynamique =
ActiveX1>>document>>frames(txtr>>name)>>document>>activeElement
            SI txtf>>tagName="A" ALORS
              Trace("clic sur lien : ",txtf>>href)
              Trace("target : ",txtf>>target)
              SI txtf>>target = "_blank" ALORS
                txtf>>target = "_parent"
                Trace("changement target ok")
              FIN
            FIN // si tagname=a
            libérer txtf
          SINON
            SI txtr>>tagName="A" ALORS
              Trace("clic sur lien : ",txtr>>href)
              Trace("target : ",txtr>>target)
              SI txtr>>target = "_blank" ALORS
                txtr>>target = "_parent"
                Trace("changement target ok")
              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 // si activex<>null

RENVOYER API("user32","CallNextHookEx",hook ,ncode, wparam, lparam)


 GP Posté le : 24/06/2003 07:51:34


J-L-J-L-J-L-J-L   !!!          

J'en ai les larmes aux yeux : c'est absolument super     

Merci infiniment, ta compétence n'a d'égale que ta gentillesse  



PS : je voudrais juste préciser pour d'autres utilisateurs éventuels que si un hook existe déjà il faut donner un autre nom à celui-ci ( hook1 par exemple ) et que la déclaration du hook n'est pas supporté en Init de fenêtre : il faut le mettre en Déclarations globales de la fenêtre  

 GP Posté le : 24/06/2003 09:02:14


Encore moi ...

La procédure mousehookproc pose un petit problème au fonctionnement des boutons qui agissent  comme le style win_97 ou les styles des boutons couleurs dénommés Bouton1P bouton2P etc ....

Exemple :

Normalement ...
Le fond d'un bouton qui est bleu foncé lorsqu'il est au repos devient bleu ciel lorsque la souris passe dessus puis revient au bleu foncé lorsque la souris quitte l'espace du bouton

Avec mousehookproc ...
Le fond d'un bouton qui est bleu foncé lorsqu'il est au repos devient bleu ciel lorsque la souris passe dessus puis NE revient PAS au bleu foncé lorsque la souris quitte l'espace du bouton

J'ai essayé de jouer sur les états des boutons : rien n'y fait

Penses-tu qu'il y ait une correction possible ?


  

 Mnemosyne Posté le : 24/06/2003 10:10:44


Merci également JL...

J'ai testé la procédure.... EXTRA !!!!   Je suis en train de l'adapter pour différentes balises..

         J'ai le même problème que GP... certaines pages bloquent le navigateur, notamment les pages voila ou similaire en raison des fenêtres popup qui s'ouvrent derrière l'application windev et qui viennent geler l'affichage et qqfois font planter la proc.


                              Bonne journée à vous.


                                           Mnémosyne.


 GP Posté le : 24/06/2003 11:02:44


Bonjour Mnemosyne

Peux-tu m'indiquer quelques url qui te font planter car pour ma part je n'ai pas rencontré de plantage sur voila ou sur des sites avec des fenêtres popup

Par contre je constate que les popups se sont ouvert sous internet explorer dans une nouvelle fenêtre externe à mon navigateur. Personnellement ces ouvertures intempestives ne me portent pas préjudice puisque je n'ai rien pas de documents à y récupérer

Ma config est W98SE et I.E 6.0  

 Mnemosyne Posté le : 24/06/2003 11:37:26


Le site voila.fr me l'a fait hier soir quand je testais la contribution de JL... Je vais en chercher d'autres car je n'ai pas noté les sites spécifiquement.... Apparemment, ce sont tous les sites qui ont des popups publicitaires et qui forcent l'affichage des pub en avant plan, dans ou au dessus (haut/gauche) du navigateur.

Ma config est WinXP pro SR1 et IE6. Je ne sais pas si je suis dans la même situation que toi car j'utilise l'activeX IE dans une MDI fille... par contre, comme toi, je ne souhaite pas que des "nouvelles fenêtres" d'IE viennent s'ouvrir, échappant à la gestion windev.

Je peux ouvrir autant de fenêtres"navigateur" fille que je veux... par contre je ne sais pas comment faire agir mes procédures sur l'ensemble de ces "clones".... mais c'est une autre histoire


                       A bientôt.

                                        Mnémosyne.

 °¨¨ JL ¨¨° Posté le : 24/06/2003 12:27:55


Re,

Effectivement le hook est déclaré dans la partie Déclarations Globales de la fenêtre.

Pour les boutons je n'ai pas ce problème...

W98SE et IE5

Utilises-tu un gabarit pour ta fenêtre ?

Pas de problème non plus pour voila.fr...

A+

Nombre de messages : 24 page : 1 sur 3Page SuivanteDernière Page
>> Poster un message dans un NOUVEAU sujet.
>> Poster un message dans ce sujet.