2017-02-24 7 views
0

In meiner MFC-Anwendung habe ich eine abgeleitete CDHtmlDialog-Klasse, die einen Anmeldebildschirm öffnet und ich muss eine URL und ein Cookie vom Server nach einer Weiterleitung erhalten.Get cookie from CDHtmlDialog

ich auf die URL in der OnInitDialog navigieren und die Umleitung innerhalb OnNavigateComplete fangen:

void CDMYHtmlDlg::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl) 
{ 
    BSTR *bstr = nullptr; 
    this->GetDHtmlDocument(&this->m_spHtmlDoc); 
    if (this->m_spHtmlDoc != nullptr) 
     this->m_spHtmlDoc->get_cookie(bstr); 
} 

aber die GetDHtmlDocument E_NOINTERFACE zurückkehrt, sollte ich ihn umsetzen? Wenn ja, wie bekomme ich das IHTMLDocument2 ?.

Also meine Frage ist, warum ich das Dokument nicht bekommen kann und ist dies der richtige Weg, um einen Cookie zu bekommen?

Vielen Dank im Voraus und Entschuldigung für mein schlechtes Englisch.

+0

Wie dies eine andere Frage von deiner [vorherigen Frage] (http://stackoverflow.com/q/42578008/1889329)? – IInspectable

Antwort

0

Endlich herausgefunden.

Innerhalb der CDHtmlDialog Klasse der OnNavigateComplete Verfahren zur Zuordnung Wert m_spHtmlDoc verantwortlich ist, aber da ich die Methode keine Einsen dem Dokument zuweisen Wert überschrieben, nicht einmal die OnDocumentComplete so die einfache Lösung ist

void CDHtmlDlgPersonalizado::OnNavigateComplete(LPDISPATCH pDisp, LPCTSTR szUrl) 
{ 
    /*CALL THE PARENT METHOD*/ 
    CDHtmlDialog::OnNavigateComplete(pDisp, szUrl); 

    /*Now GetDHtmlDocument will get the value from m_spHtmlDoc and assign to spHtmlDoc*/ 
    IHTMLDocument2Ptr spHtmlDoc = nullptr; 
    this->GetDHtmlDocument(&spHtmlDoc); 

    if (spHtmlDoc != nullptr) 
    { 
     BSTR bstr = ::SysAllocString(L" "); 
     spHtmlDoc->get_cookie(&bstr); 
    } 
}