我让 tChromium 在 Delphi 7 下工作,它应该都是一样的。
我采取了一些步骤来从 DOM 中读取元素
首先我从这个项目中得到了一个包装:
https ://code.google.com/p/delphichromiumembedded/downloads/detail?name=dcef-r306.7z&can=2&q=
XE2 也有一个,将其转换为 XE3 不需要太多,如果您需要帮助,我很乐意应要求提供帮助。
然后在 tchromium 中声明一个开始和结束
procedure TMainForm.crmLoadStart(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame); begin
if (browser <> nil) and (browser.GetWindowHandle = crm.BrowserHandle) and ((frame = nil) or (frame.IsMain)) then FLoading := True;
end;
,
procedure TMainForm.crmLoadEnd(Sender: TObject; const browser: ICefBrowser; const frame: ICefFrame; httpStatusCode: Integer; out Result: Boolean);
begin
if (browser <> nil) and (browser.GetWindowHandle = crm.BrowserHandle) and ((frame = nil) or (frame.IsMain)) then begin
FLoading := False;
// see if loaded
while(httpStatusCode <> 200) do begin
Application.ProcessMessages;
Sleep(50);
end;
browser.GetMainFrame.VisitDomProc(DomProc);
end;
end;
像这样声明一个名为 domproc 的过程:
procedure DomProc(const Doc: ICefDomDocument);
var
Node: ICefDomNode;
begin
url := Doc.BaseUrl;
if(url='www.goodwebsite.com') then // check if it is the right page and not add
Node := Doc.Body.Document.GetElementById('idofwhatyouarelookingfor');
Node.SetElementAttribute('value','Hello world :D');
end;
这是迄今为止我发现的最可靠的方法,您需要确保页面加载良好并且您获得了正确框架的 dom。
希望它对您有所帮助,请务必查看上面下载链接中的示例代码,这对我有很大帮助。
玩得开心编码,德尔福摇滚!