NAVIGATEUR WEB (API)

Signaler
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
-
cs_strawberry
Messages postés
1
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
11 octobre 2012
-
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/29247-navigateur-web-api

cs_strawberry
Messages postés
1
Date d'inscription
vendredi 3 mars 2006
Statut
Membre
Dernière intervention
11 octobre 2012

Mes commentaires viennent sûrement un peu tard mais je voulais dire à l'auteur du Navigateur Web (RACPP) merci et bravo.
Merci car grâce à lui j'ai compris pas mal de chose sur l'API windows et bravo car son source est clair, propre et très bien commenté. Cela change des exemples de programmes écrit à la rache, brouillons et sans aucun commentaire qu'on trouve fréquemment.

Encore merci à toi RACPP
HeavenForsaker
Messages postés
223
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
8 août 2011

Bonjour DxShadow,

merci pour la réponse mais je connais déjà ces combinaisons, elles ne fonctionnent pas dans l'application, d'où ma question.

++
DxShadow
Messages postés
69
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
12 mai 2013

@HeavenForsaker:

utilise CTRL+C (copier) et CTRL+V (coller).
Y'a d'autres raccourcis:

CTRL+A: tout sélectionner
CTRL+X: couper

etc.
HeavenForsaker
Messages postés
223
Date d'inscription
mercredi 13 juillet 2005
Statut
Membre
Dernière intervention
8 août 2011

Bravo racpp pour cet excellent code.

Quand on sélectionne du texte sur la page puis clique droit, la fonction copier coller ne fonctionne pas (c'est la seule d'ailleurs), y a t-il moyen de l'activer ?
tigrou1825
Messages postés
1
Date d'inscription
jeudi 3 janvier 2008
Statut
Membre
Dernière intervention
5 février 2008

Merci pour ce post très clair.
J'en profite car dans mon application il faut que j'ouvre les pop up dans le meme browser.
J'ai essayé de faire comme indiqué dans le MSDN
ms-help://MS.VSCC/MS.MSDNVS.1036/ProgIE/workshop/browser/hosting/wbcustomization.htm#Controlling_New_Windows

ou ils indiquent qu'il faut fournir au premier paramètre de l'interface le pointeur sur le IDispatch de notre control WebBrowser mais sans succès. Avez vous une idée SVP

Merci d'avance
cs_pow
Messages postés
7
Date d'inscription
dimanche 29 décembre 2002
Statut
Membre
Dernière intervention
12 janvier 2007

Sympa ton code, ma question: comment faire pour eviter les freezes lors du chargement de la page ?
Ce problème se produit typiquement lorsque on accède à des pages contenant des videos, mais survient aussi lors du chargement de nombreuses images.
L'interface se retrouve complètement figée le temps que le controle windows media player soit chargé (par exemple: plus moyen de déplacer la fenetre).

Aurais-tu une solution (probablement à base de threading) ?
vecchio56
Messages postés
6535
Date d'inscription
lundi 16 décembre 2002
Statut
Modérateur
Dernière intervention
22 août 2010
7
J'aurais aimé modifier quelques trucs mais je n'y arrive pas
Par exemple, ajouter la status bar:
J'ajoute donc la ligne pIWeb->put_StatusBar(VARIANT_TRUE); (ca semble marcher, hr = S_OK), mais je ne la vois pas

Quelqu'un a une idée?
OGL
Messages postés
1
Date d'inscription
lundi 13 février 2006
Statut
Membre
Dernière intervention
27 février 2006

Bonjour,

J'essaie de simuler un click droit de l'utilisateur sur la fenetre conteneur de l'ActiveX IWebBrowser2. j'ai repris tout bêtement le code zippé et j'ai rajouté quelquepart ces lignes de code:

HWND hh;
pIWeb->get_HWND((long*)(&hh));
SendMessage(hh,WM_RBUTTONDOWN,(WPARAM)0,(LPARAM)MAKEWORD(10,10));
SendMessage(hh,WM_RBUTTONUP,(WPARAM)0,(LPARAM)MAKEWORD(10,10));

Et cela ne fonctionne pas. j'ai essayé ensuite:

SendMessage(hConteneur,WM_RBUTTONDOWN,(WPARAM)0,(LPARAM)MAKEWORD(10,10));
SendMessage(hConteneur,WM_RBUTTONUP,(WPARAM)0,(LPARAM)MAKEWORD(10,10));

Il m'ouvre le menu contexte de n'importe quel Edit donc du conteneur au lieu de m'ouvrir le menu contextuel des sites Internet donc du contenu).

Quel quelqu'un serait me dire pourquoi?
Il y a t-il un autre moyen d'envoyer des messages ou de récupérer le handle de cette fenetre?

Merci d'avance.
victorcoasne
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
3
Bonjour,

C'est pour savoir si je veux donner un autre nom au navigateur comment je fais ?

Ex : Au lieu de Mozilla/4.0 (..... je veux WebBrownser

Bonne prog,
@++
theXman
Messages postés
37
Date d'inscription
mardi 25 février 2003
Statut
Membre
Dernière intervention
11 mars 2006

comment utiliser un poxy avec cet activex???
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
A vérifier mais je ne pense pas.
ultraLek
Messages postés
10
Date d'inscription
mardi 28 novembre 2000
Statut
Membre
Dernière intervention
13 octobre 2006

ok merci : je vais voir ce que cela donne : mais cela veut dire que je ne pourrais pas paramétrer le comportement pour une seule instance de IE...
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
Je pense qu'il faut regarder les clés BDR écrites quand on modifie les options IE et reproduire cela.
ultraLek
Messages postés
10
Date d'inscription
mardi 28 novembre 2000
Statut
Membre
Dernière intervention
13 octobre 2006

oui mais est ce possible de coder cela?
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
Onglet "avancé" de IE, il y a ce qu'il faut.
ultraLek
Messages postés
10
Date d'inscription
mardi 28 novembre 2000
Statut
Membre
Dernière intervention
13 octobre 2006

Bonsoir j'ai essayer le code : nickel. J'aimerais offrir une navigation avec un max de sécurité : est ce que quelqu'un saurait comment faire pour interdire l'interprétation des javascripts, de java, et des activeX contenus dans les pages web?
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
10
Salut,
Exactement ce code ne fait qu'utiliser l'activex WebBrowser d'Internet Explorer. Il hérite donc malheureusement de tous ses défauts.
victorcoasne
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
3
Bonjour th,

C'est la même erreur que Internet Explorer car c'est Internet Explorer.
Il n\'y a apparement pas de check box pour pas qui réapparaisse mais si il y a une solution l'expert des activeX va te le dire.

Bonne prog,
@++
thunderfear
Messages postés
99
Date d'inscription
lundi 8 septembre 2003
Statut
Membre
Dernière intervention
1 septembre 2010

hello,
Quand j'ai une erreur de script sur une page web, le programme le signale et bloque le chargement de la page. Comment masquer cette erreur et laisser charger la page??

Merci d'avance.
a bientot.
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
10
salber >> Désolé, aucune idée à ce sujet.
cs_salber
Messages postés
1
Date d'inscription
vendredi 28 mai 2004
Statut
Membre
Dernière intervention
8 août 2005

Merci bien, mais est qu'on peut rajouter des méthodes qui seront appelés depuis un script(VBScript ou JScript) par exemple ??
Merci bien pour le code.
victorcoasne
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
3
Merci ça marche nickel.
Je l'ai inclu dans le même répertoire que le projet en rajoutant :
#include "exdispid.h"
avant
#include "evenem.h"
et voilà !

Pour la peine je met un 10/10 !
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
10
#ifndef EXDISPID_H_
//+-------------------------------------------------------------------------
//
// Microsoft Windows
// Copyright 1995 - 1998 Microsoft Corporation. All Rights Reserved.
//
// File: exdispid.h
//
//--------------------------------------------------------------------------


//
// Dispatch IDS for IExplorer Dispatch Events.
//
#define DISPID_BEFORENAVIGATE 100 // this is sent before navigation to give a chance to abort
#define DISPID_NAVIGATECOMPLETE 101 // in async, this is sent when we have enough to show
#define DISPID_STATUSTEXTCHANGE 102
#define DISPID_QUIT 103
#define DISPID_DOWNLOADCOMPLETE 104
#define DISPID_COMMANDSTATECHANGE 105
#define DISPID_DOWNLOADBEGIN 106
#define DISPID_NEWWINDOW 107 // sent when a new window should be created
#define DISPID_PROGRESSCHANGE 108 // sent when download progress is updated
#define DISPID_WINDOWMOVE 109 // sent when main window has been moved
#define DISPID_WINDOWRESIZE 110 // sent when main window has been sized
#define DISPID_WINDOWACTIVATE 111 // sent when main window has been activated
#define DISPID_PROPERTYCHANGE 112 // sent when the PutProperty method is called
#define DISPID_TITLECHANGE 113 // sent when the document title changes

#define DISPID_FRAMEBEFORENAVIGATE 200
#define DISPID_FRAMENAVIGATECOMPLETE 201
#define DISPID_FRAMENEWWINDOW 204

#define DISPID_BEFORENAVIGATE2 250 // hyperlink clicked on
#define DISPID_NEWWINDOW2 251
#define DISPID_NAVIGATECOMPLETE2 252 // UIActivate new document
#define DISPID_ONQUIT 253
#define DISPID_ONVISIBLE 254 // sent when the window goes visible/hidden
#define DISPID_ONTOOLBAR 255 // sent when the toolbar should be shown/hidden
#define DISPID_ONMENUBAR 256 // sent when the menubar should be shown/hidden
#define DISPID_ONSTATUSBAR 257 // sent when the statusbar should be shown/hidden
#define DISPID_ONFULLSCREEN 258 // sent when kiosk mode should be on/off
#define DISPID_DOCUMENTCOMPLETE 259 // new document goes ReadyState_Complete
#define DISPID_ONTHEATERMODE 260 // sent when theater mode should be on/off
#define DISPID_ONADDRESSBAR 261 // sent when the address bar should be shown/hidden

// define the events for the shell folder view
#define DISPID_SELECTIONCHANGED 200 // The Selection Changed

// define the events for the shell wiwndow list
#define DISPID_WINDOWREGISTERED 200 // Window registered
#define DISPID_WINDOWREVOKED 201 // Window Revoked


#define DISPID_RESETFIRSTBOOTMODE 1
#define DISPID_RESETSAFEMODE 2
#define DISPID_REFRESHOFFLINEDESKTOP 3
#define DISPID_ADDFAVORITE 4
#define DISPID_ADDCHANNEL 5
#define DISPID_ADDDESKTOPCOMPONENT 6
#define DISPID_ISSUBSCRIBED 7
#define DISPID_SHELLUIHELPERLAST 7


#define EXDISPID_H_
#endif // EXDISPID_H_
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
10
Salut,
Tous ces identificateurs sont déclarés et définis dans le fichier "exdispid.h" de Visual C/C++ 6. Il parait que celui de Dev-C++ n'est pas complet. Puisqu'il est petit, je le mets dans le post suivant. Il suffit de tout copier puis coller dans le bloc-notes et enfin sauvegarder avec l'extension *.h
victorcoasne
Messages postés
1100
Date d'inscription
jeudi 24 avril 2003
Statut
Membre
Dernière intervention
17 octobre 2012
3
In file included from NavWeb.cpp:4:
evenem.h: In member function `virtual HRESULT Evenem::Invoke(DISPID, const IID&, LCID, WORD, DISPPARAMS*, VARIANT*, EXCEPINFO*, unsigned int*)':
evenem.h:85: error: `DISPID_DOWNLOADBEGIN' undeclared (first use this function)
evenem.h:85: error: (Each undeclared identifier is reported only once for each function it appears in.)

evenem.h:90: error: `DISPID_DOWNLOADCOMPLETE' undeclared (first use this function)
evenem.h:95: error: `DISPID_NAVIGATECOMPLETE2' undeclared (first use this function)
evenem.h:112: error: `DISPID_COMMANDSTATECHANGE' undeclared (first use this function)

Voici les erreurs sous Dev-C++ !
cs_supergrey
Messages postés
475
Date d'inscription
vendredi 27 juin 2003
Statut
Membre
Dernière intervention
20 septembre 2010

Je serais très intéresser de savoir comment récupérer l'url des popups, tu en parle vaguement, pourrais tu m'en dire plus?
Merci
lnbuzzi
Messages postés
2
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
9 mars 2005

OK! J'avais pas vu ce lien. Je regardais dans la partie "sources".
Merci
BruNews
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
16
Je viens de tester, ce zip se télécharge (lien à gauche au dessus de la capture d'écran) et s'ouvre impec.
lnbuzzi
Messages postés
2
Date d'inscription
mercredi 9 mars 2005
Statut
Membre
Dernière intervention
9 mars 2005

Je ne sais pas si le problème vient de toi ou non, mais je ne peux pas télécharger tes sources.
Auraient-elles été supprimées?
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
10
manta7 > Le fichier "exdisp.h" est fourni avec Visual C/C++ dans le dossier "Include". Il contient les définitions des interfaces (comme IWebBrowser2) et des identificateurs (comme IID_IWebBrowser2 etc...). Aucune idée pour les autres compilateurs mais il doit y avoir un équivalent. En tous cas, le voici:
http://doc.ddart.net/msdn/header/include/exdisp.h.html
Tu peux copier le contenu de cette page ( entre les deux barres bleues horizontales), puis le coller dans le Bloc-Notes et enfin l'enregistrer avec l'extension ".h". J'espère que ça marchera.

MangaII > En API (sans MFC), tu peux utiliser l'interface "IHTMLDocument2", elle te permet de lire et modifier les éléments d'un document HTML déjà chargé avec l'interface "IWebBrowser2" sans qu'il soit obligatoirement affiché. Tu tapes les mots "ihtmldocument2" et "msdn" dans Google et tu obtiendras toute la documentation sur cette interface dans le site MSDN.
MangaII
Messages postés
129
Date d'inscription
dimanche 9 décembre 2001
Statut
Membre
Dernière intervention
12 janvier 2009

Question hors sujet : Je cherche à faire un webbrowser, mais je souhaite pouvoir intercepter le code html (et pouvoir le modifier) avant de l'afficher ! J'ai pas trouvé à la faire avec les classes de l'api (CHtmlView ...)
Qqun aurait-il une idée ????
manta7
Messages postés
105
Date d'inscription
samedi 25 janvier 2003
Statut
Membre
Dernière intervention
13 décembre 2008

C'est quoi la librairie exdisp ?
cs_Urgo
Messages postés
780
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 avril 2009
1
racpp > Oui, merci pour la description claire, c'est très agréable à lire!
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
10
Urgo > Oui c'est normal. Dans la présentation de ce code source j'ai précisé que toutes les fenêtres popup (désirées ou non) seront bloquées pour éviter le lancement d'Internet Explorer et ne pas compliquer le code. Pour bloquer une popup, on intercepte le message DISPID_NEWWINDOW2. Malheureusement ce dernier ne fournit pas l'URL du site bloqué. Je ne comprends pas pourquoi Microsoft l'a enlevé car dans la précédente version (IWebBrowser), le message DISPID_NEWWINDOW fournissait cet URL et nous permettait d'ouvrir le site correspondant dans la fenêtre courante. Pour ouvrir le site sur la même fenêtre avec IWebBrowser2, il faut créer une nouvelle instance de IWebBrowser2 et l'attacher à notre conteneur. Ceci compliquera davantage le code. Mon but étant de montrer comment réaliser un navigateur basé sur l'activex WebBrowser avec gestion des événements. Il faut rappeler que ce programme ne fait que communiquer avec cet activex. Il hérite donc de tous les défauts d'Internet Explorer puisque il en fait partie.
cs_Urgo
Messages postés
780
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 avril 2009
1
Bizarre, cela ne me le fait plus aujourd'hui sur les mêmes sites...
Par contre il plante lorsqu'on clique sur certains liens (genre fenêtre popup) mais ça c'est normal... me trompe-je?
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
10
Urgo > tu peux me donner les URLs de ces sites? J'avais fait des tests sur des sites trop chargés, sans rien remarquer.
racpp
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
10
Oui, mais plutot la classe et non la lib. Après avoir obtenu un pointeur sur l'interface DWebBrowserEvents2, on crée une instance de notre classe puis on commence l'interception des événements en appelant la méthode Advise() de l'interface DWebBrowserEvents2. Cette méthode prend en paramètre le pointeur de notre instance de classe. Cette dernière capte alors tous les événements et les transmet à la procédure de notre fenêtre. C'est dans la méthode Invoke que tout se passe. Regarder dans "evenem.h".
cs_Urgo
Messages postés
780
Date d'inscription
lundi 16 décembre 2002
Statut
Membre
Dernière intervention
16 avril 2009
1
Y'a un gros plantage de ton prog sur certains sites.. je sais pas si tu l'as remarqué?
Arnaud16022
Messages postés
1329
Date d'inscription
vendredi 15 août 2003
Statut
Membre
Dernière intervention
16 juin 2010
2
si je comprends bien, tu crées la fenetre et gere les events, et la lib fait le reste?