| auteur : nico-pyright(c) | Voici une fonction qui fait le travail :
CString CMyWebView:: GetHtml ()
{
IDispatch * pDispDoc = NULL ;
IHTMLDocument2 * pDoc = NULL ;
HRESULT hr = S_OK;
CString retour;
try
{
pDispDoc = GetHtmlDocument ();
pDispDoc- > AddRef ();
hr = pDispDoc- > QueryInterface ( IID_IHTMLDocument2, (void * * )& pDoc );
if (! FAILED (hr))
{
IHTMLElementCollection * pAll = NULL ;
hr = pDoc- > get_all ( & pAll );
if (! FAILED (hr))
{
_variant_t name (_T (" HTML " ));
IDispatch * pTags = NULL ;
hr = pAll- > tags ( name, & pTags );
if (! FAILED (hr))
{
IHTMLElementCollection * pEles = NULL ;
hr = pTags- > QueryInterface (IID_IHTMLElementCollection, (void * * )& pEles );
if (! FAILED (hr))
{
_variant_t elename;
elename.vt = VT_EMPTY;
_variant_t ind;
ind.lVal = 0 ;
ind.vt = VT_I4;
IDispatch* pEleDisp = NULL ;
hr = pEles- > item (elename, ind, & pEleDisp );
if (! FAILED (hr))
{
IHTMLElement * pEle = NULL ;
hr = pEleDisp- > QueryInterface ( IID_IHTMLElement, (void * * ) & pEle );
if (! FAILED (hr))
{
BSTR html;
hr = pEle- > get_innerHTML (& html);
CString h (html);
retour = h;
pEle- > Release ();
pEle = NULL ;
}
pEleDisp- > Release ();
pEleDisp = NULL ;
}
pEles- > Release ();
pEles = NULL ;
}
pTags- > Release ();
pTags = NULL ;
}
pAll- > Release ();
pAll = NULL ;
}
pDoc- > Release ();
pDoc = NULL ;
}
pDispDoc- > Release ();
pDispDoc = NULL ;
}
catch (_com_error e)
{
CString erreur ((const char * )e.Description ());
retour = erreur;
}
ASSERT (! hr);
return retour;
}
|
|
| auteur : nico-pyright(c) | Il existe deux solutions très simples à mettre en oeuvre :
- Avec une vue dérivant de CHtmlView
- Avec un activeX (le composant "Navigateur Web Microsoft")
Elles reposent sur la même base : IWebBrowser2
La navigation vers une page web, se fait grâce à la méthode Navigate2
|
| auteur : nico-pyright(c) |
Pour naviguer en GET, il suffit de passer les paramètres à l'url
Navigate2 (_T (" http://www.google.fr/search?hl=fr&q=developpez+forum+visual+c%2B%2B&btnG=Rechercher&meta= " ), NULL , NULL );
|
Pour envoyer des données en POST, on peut faire ainsi
char * params = " login=monLogin&password=monPwd " ;< br/ >
Navigate2 (_T (" http://www.mapage.com " ), 0 , NULL , " Content-Type: application/x-www-form-urlencoded\r\n " , params, strlen (params));< br/ >
|
|
| auteur : Farscape | Un appel du client de messagerie par défaut est possible avec la fonction shellExecute .
L'appel est normalisé et permet le remplissage des zones :
Adresse mail, le sujet, le texte principal, la zone CC (ou carbon copy) et bcc (blind carbon copy)
La syntaxe et l'écriture des chaînes est normalisé RFC 2368
Exemple de commande :
mailto :farscape@dvpnospam.com?subject= Faq& body= la nouvelle faq arrive
|
L'appel avec shellexecute donnera :
ShellExecute (AfxGetMainWnd ()- > m_hWnd, " open " ,
" mailto:farscape@dvpnospam.com?cc=cc@dvpnospam.fr&bcc=bcc@dvpnospam.com&
subject= la faq& body= la nouvelle faq arrive& attachment= \"\"c:\\Cxtabctrl.JPG\"\"" ,
NULL , NULL , SW_SHOWNORMAL);
|
Note:la ligne précédente est sans espace, j'ai dû faire des passages à la ligne à cause de sa longueur...
cerise sur le gâteau avec Outlook la commande attachment permet de lier un fichier en pièce jointe.
|
| auteur : Gabrielly | Lorsque vous chercher à visualiser un contrôle ActiveX dans le navigateur Web. Ce dernier vous affiche un message de sécurité
concernant l'utilisation de votre contrôle ActiveX.
En fonction des paramètres de sécurité actuellement définis dans Internet Explorer,
vous pourriez recevoir une boîte de dialogue Alerte de sécurité indiquant que le contrôle pourrait ne pas être fiable
et pourrait potentiellement causer des dommages s'il était inclus dans un script.
Par exemple, votre contrôle ne serait pas fiable s'il comporte une méthode Delete() supprimant un fichier et que par mégarde un utilisateur la déclenchait.
Il serait fiable s'il était simplement affiché sur une page dépourvue de cette action de suppression.
Il ne le serait toutefois pas s'il était inclus dans un script puisque quelqu'un pourrait appeler la méthode Delete().
Vous avez deux alternatives pour y rémédier.
Vous pouvez changer vos paramètres de sécurité dans Internet Explorer pour exécuter les contrôles ActiveX qui ne sont pas marqués comme étant fiables.
Dans Panneau de configuration, cliquez sur Propriétés Internet et sur Sécurité pour changer les paramètres appropriés.
A la fin rétablissez l'état initial de vos paramètres de sécurité.
Vous pouvez indiquer par programme à Internet Explorer qu'il n'est pas nécessaire d'afficher la boîte de dialogue Alerte de sécurité
pour ce contrôle particulier.
Utilisez pour cela l'interface IObjectSafety dont ATL fournit une implémentation dans la classe IObjectSafetyImpl.
Pour ajouter l'interface à votre contrôle, ajoutez IObjectSafetyImpl à votre liste de classes héritées et ajoutez-lui une entrée dans votre table COM.
Pour ajouter IObjectSafetyImpl au contrôle ActiveX dans un code ATL :
class ATL_NO_VTABLE CMyActivex :
,public IObjectSafetyImpl< CMyActivex, INTERFACESAFE_FOR_UNTRUSTED_CALLER>
{
BEGIN_COM_MAP (CMyActivex)
COM_INTERFACE_ENTRY (IObjectSafety)
END_COM_MAP ()
} ;
|
Pour un code MFC ça devrait être semblable en suivant le même ordre d'idée.
|
Consultez les autres F.A.Q.
|
|