PDA

Ver la Versión Completa : Captura de HTML desde IE


taita
04-10-2004, 23:53:43
Hola a tod@s:

Pues de eso mismo se trata esta pregunta.
Supongamos que estamos viendo una página en el navegador (no necesariamente tiene que ser el Internet Explorer).
Si seleccionamos parte del texto que estamos visualizando y lo copiamos en la memoria, cuando lo pegamos en algunos programas (por ejemplo Dreamweaver) nos aparece la opción de pegarlo manteniendo el formato (etiquetas html).
Cuando intento pegar en mi Tmemo el contenido que he seleccionado sólo se pega el texto y no las etiquetas.
¿Cómo se puede hacer para pegar el contenido del portapapeles incluyendo las etiquetas html?

Pufff
Gracias!

taita
06-10-2004, 02:42:58
Debo usar algun componente especial para hacer esto? ya he probado con algunas cosas, pero siempre con el mismo resultado.
A ver si alguien puede orientarme un poco...

keyboy
06-10-2004, 19:04:17
El texto seleccionado en una página web se registra en el portapapeles con el formato 'HTML Format'. Para obtener el texto puedes usar esta función:


function GetClipboardHTML: String;
var
cfHtml: Cardinal;
cbHandle: THandle;
TextPtr: PChar;

begin
cfHtml := RegisterClipboardFormat('HTML Format');
if Clipboard.HasFormat(cfHtml) then
begin
Clipboard.Open;
try
cbHandle := Clipboard.GetAsHandle(cfHtml);
TextPtr := GlobalLock(cbHandle);
Result := StrPas(TextPtr);
GlobalUnlock(cbHandle);
finally
Clipboard.Close;
end;
end;
end;


Esta es la parte fácil. La parte difícil es entender exactamente el formato que queda en el portapapeles, algo como:


Version:0.9
StartHTML:00000097
EndHTML:00000450
StartFragment:00000111
EndFragment:00000414
<html><body>
<!--StartFragment -->
<td background="/img/rl.gif" valign="bottom" width="28"></td>
<td valign="top">
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tbody><tr>
<td valign="top">

<h1>FIBPlus - Fast InterBase Plus</h1></td></tr></tbody></table></td>
<!--EndFragment-->
</body>
</html>


de manera que tienes que quitar el encabezado y decidir con qué parte te quedas, con lo que está entre las posiciones StartHTML y EndHTML (el contexto) o lo que está entre las posiciones StartFragment o EndFragment (el fragmento). La descripción completa del formato la puedes encontrar aquí (http://msdn.microsoft.com/library/default.asp?url=/workshop/networking/clipboard/htmlclipboard.asp).

Bye

taita
06-10-2004, 23:21:45
Muchas Gracias Keyboy me ha venido de perlas.
Gracias.