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:
Código:
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:
Código:
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í.
Bye