NAVIGATEUR WEB (API)

Arnaud16022 Messages postés 1329 Date d'inscription vendredi 15 août 2003 Statut Membre Dernière intervention 16 juin 2010 - 2 févr. 2005 à 18:13
cs_strawberry Messages postés 1 Date d'inscription vendredi 3 mars 2006 Statut Membre Dernière intervention 11 octobre 2012 - 11 oct. 2012 à 20:11
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
11 oct. 2012 à 20:11
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
23 déc. 2009 à 20:51
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
22 déc. 2009 à 20:34
@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
6 oct. 2009 à 12:30
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
5 févr. 2008 à 15:22
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
12 janv. 2007 à 16:50
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 Membre Dernière intervention 22 août 2010 14
23 juil. 2006 à 16:40
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
27 févr. 2006 à 16:50
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 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
24 févr. 2006 à 22:21
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
22 janv. 2006 à 18:16
comment utiliser un poxy avec cet activex???
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
5 déc. 2005 à 10:39
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
5 déc. 2005 à 09:38
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 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 déc. 2005 à 21:42
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
4 déc. 2005 à 21:17
oui mais est ce possible de coder cela?
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
4 déc. 2005 à 18:27
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
4 déc. 2005 à 00:14
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
12 août 2005 à 17:27
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 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
11 août 2005 à 19:18
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
11 août 2005 à 15:56
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
9 août 2005 à 22:20
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
8 août 2005 à 15:17
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 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
8 août 2005 à 00:13
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
7 août 2005 à 21:34
#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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
7 août 2005 à 21:34
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 1101 Date d'inscription jeudi 24 avril 2003 Statut Membre Dernière intervention 23 juillet 2023 7
2 août 2005 à 22:54
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
30 mai 2005 à 16:58
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
9 mars 2005 à 16:13
OK! J'avais pas vu ce lien. Je regardais dans la partie "sources".
Merci
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 mars 2005 à 16:10
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
9 mars 2005 à 15:43
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
7 févr. 2005 à 20:59
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
7 févr. 2005 à 19:29
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
7 févr. 2005 à 17:41
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
5 févr. 2005 à 00:08
racpp > Oui, merci pour la description claire, c'est très agréable à lire!
racpp Messages postés 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
3 févr. 2005 à 23:48
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
3 févr. 2005 à 18:39
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
2 févr. 2005 à 18:55
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 1909 Date d'inscription vendredi 18 juin 2004 Statut Modérateur Dernière intervention 14 novembre 2014 17
2 févr. 2005 à 18:51
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
2 févr. 2005 à 18:46
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
2 févr. 2005 à 18:13
si je comprends bien, tu crées la fenetre et gere les events, et la lib fait le reste?
Rejoignez-nous