我有一个网页,里面有各种表格。这些表格是JavaScript组件,不仅仅是纯HTML表格。我需要用Delphi程序(Delphi 10.3)处理此网页的文本(有点类似于屏幕抓取)。
我使用Ctrl-A/Ctrl-C选择整个网页并将所有内容复制到剪贴板中。如果我将其粘贴到程序中的
我可以将其正确地粘贴到
我设置了一个剪贴板HTML格式。当我检查剪贴板内容时,我看到的是所有汉字字符。
当剪贴板内容为HTML时,如何读取剪贴板内容?
在完美的情况下,我只想要文本本身,而不是HTML本身,但我以后可以将其去除。这是我现在正在做的...
在初始化时...(其中
那么我的例行工作就是...
我使用Ctrl-A/Ctrl-C选择整个网页并将所有内容复制到剪贴板中。如果我将其粘贴到程序中的
TMemo
组件中,我只能得到表格外的文本。如果我将其粘贴到MS Word中,则可以查看所有内容,包括表格内的文本。我可以将其正确地粘贴到
TAdvRichEditor
(第三方软件)中,但这需要很长时间,并且我经常会遇到内存不足的情况。这使我相信我需要直接读取带有HTML格式的剪贴板。我设置了一个剪贴板HTML格式。当我检查剪贴板内容时,我看到的是所有汉字字符。
当剪贴板内容为HTML时,如何读取剪贴板内容?
在完美的情况下,我只想要文本本身,而不是HTML本身,但我以后可以将其去除。这是我现在正在做的...
在初始化时...(其中
CF_HTML
是全局变量)CF_HTML := RegisterClipboardFormat('HTML Format');
那么我的例行工作就是...
function TMain.ClipboardAsHTML: String;
var
Data: THandle;
Ptr: PChar;
begin
Result := '';
with Clipboard do
begin
Open;
try
Data := GetAsHandle(CF_HTML);
if Data <> 0 then
begin
Ptr := PChar(GlobalLock(Data));
if Ptr <> nil then
try
Result := Ptr;
finally
GlobalUnlock(Data);
end;
end;
finally
Close;
end;
end;
end;
**附加信息-当我从网页复制时...,我可以使用一个名为InsideClipboard的免费工具检查剪贴板缓冲区的内容。它显示剪贴板包含1个条目,有5种格式:CT_TEXT
, CF_OEMTEXT
, CF_UNICODETEXT
, CF_LOCALE
和'HTML Format'
(格式ID为49409)。只有'HTML Format'
包含我正在寻找的内容....这就是我尝试使用所示代码访问的内容。
Clipbrd.exe
是这样的。是的,您可以将此文件复制到Windows 7并且它仍然有效。但是根据我所读到的信息,它在Windows 10上无法使用。无论如何,根据Clibrd.exe
的信息,网页的内容以文本、Unicode文本、区域设置和OEM文本格式保存到剪贴板中... - SilverWarior