Red de conocimiento informático - Conocimiento del nombre de dominio - Cómo obtener el código fuente de todas las páginas enmarcadas

Cómo obtener el código fuente de todas las páginas enmarcadas

Utilice chtmlview para abrir una página enmarcada y escriba la siguiente función,

BOOL CHtmlView:: GetFrameSource(IDispatch *pDisp, CStringamp; refString)

{

BOOL bRetVal = FALSO;

HRESULT hr = S_OK;

if ( pDisp != NULL )

{

CComQIPtrlt; = pDisp;

if ( pBrowser != NULL )

{

IDispatch *pDispDoc = NULL;

hr = pBrowser-gt ; get_Document(amp; pDispDoc);

if ( !( ( FAILED(hr) || !pDisp ) )

{

CComQIPtrlt; IPersistStreamInitgt; pStmInit = pDisp;

if ( !pStmInit )

{

HGLOBAL hMemory;

hMemory = GlobalAlloc(GMEM_MOVEABLE, 0);

if ( hMemory ! = NULL)

{

CComQIPtrlt; IPersistStreamInitgt; spPSI = pDispDoc;

{

CComPtrlt; IStreamgt; spStream;

if (SUCCEED(CreateStreamOnHGlobal(hMemory, TRUE, amp; spStream)))

{

spPSI-gt;Save(spStream, FALSE);

LPCTSTR pstr = (LPCTSTR) GlobalLock(hMemory);

if (pstr != NULL)

{

// La transmisión siempre es ANSI, pero CString

// El operador de asignación convertirá implícitamente.

bRetVal = VERDADERO

INTENTAR

{

refString = pstr;

CATCH_ALL(e)

{

bRetVal = FALSE

DELETE_EXCEPTION(e);

}

END_CATCH_ALL

if(bRetVal == FALSE)

GlobalFree(hMemory

else

GlobalUnlock(hMemory);

}

}

}

}

}

}

}

RELEASE(pDispDoc);

}

}

}

regresar bRetVal;

}

Pero solo se puede usar en DocumentComplete, porque no sé cómo obtener el pDisp, parece que solo en DocumentComplete puedo obtener el pDisp de cada página en el marco, por lo que no hay universalidad. Lo que quiero lograr es una función similar a GetSource, es decir, siempre que la página se haya descargado, el archivo fuente html del marco se puede obtener en cualquier momento. /p>