Ver Mensaje Individual
  #3  
Antiguo 06-10-2004
keyboy keyboy is offline
Miembro
 
Registrado: oct 2004
Posts: 367
Reputación: 22
keyboy Va por buen camino
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
Responder Con Cita