認証に TChromium を使用しています。私は変数を持っていますChromium1: TChromium;
。フォームの非表示とフォームの表示でクロムを破壊する必要があります。(クロムは時々例外「EExternal Exception in module libcef.dll」を発生させ、アプリをクラッシュさせるため、使用しないときにChromiumを破壊すると役立つと思います)。私は持っている:
procedure TAuthForm.FormShow(Sender: TObject);
begin
Chromium1 := TChromium.Create(self);
Chromium1.Align := alClient;
Chromium1.OnJsdialog := Chromium1Jsdialog;
Chromium1.OnBeforePopup := Chromium1BeforePopup;
Chromium1.DefaultUrl := 'about:blank';
Chromium1.Parent := Self;
Chromium1.Load(AUTH_URL);
end;
procedure TAuthForm.FormHide(Sender: TObject);
begin
Chromium1.Free;
end;
問題は、TAuthForm.FormShow
最初に呼び出されたときにページが正しく読み込まれることですが、フォームを非表示にして再度表示すると、ブラウザーにページが正しく表示されないため、ここで説明する方法は次の例ですhttp://google.com/
。
Google(function(){ window.google={kEI:"oKRKUZ2iHafP4QTXwYCwDw",getEI:function(a) {for(var b;a&&(!a.getAttribute||!(b=a.getAttribute("eid")));)a=a.parentNode;return b||google.kEI},https:function(){return"https:"==window.location.protocol},kEXPI:"17259,39523,4000116,4001076,4001568,4001948,4001959,4001975,4002562,4002734,4002855,4003178,4003387,4003495,4003917,4004181,4004213,4004257,4004334,4004340,4004479,4004652,4004653,4004697,4004730,4004755,4004759,4004766,4004898,4004905,4004949,4004953,4005154",kCSI:{e:"17259,39523,4000116,4001076,4001568,4001948,4001959,4001975,4002562,4002734,4002855,4003178,4003387,4003495,4003917,4004181,4004213,4004257,4004334,4004340,4004479,4004652,4004653,4004697,4004730,4004755,4004759,4004766,4004898,4004905,4004949,4004953,4005154",ei:"oKRKUZ2iHafP4QTXwYCwDw"},authuser:0,ml:function(){},pageState:"#",kHL:"ru",time:function(){return(new Date).getTime()},log:function(a, b,c,h){var d=new Image,f=google.lc,e=google.li,g="";d.onerror=d.onload=d.onabort=function(){delete f[e]};f[e]=d;!c&&-1==b.search("&ei=")&&(g="&ei="+google.getEI(h));c=c||"/gen_204?........
を含むすべてのブロックのコンテンツが表示され、ここ<title>
で<script>
わかるように...
解決策を見つけようとしましたが、同じエラー (解決策のない libcef.dll 例外を意味します) しか見つかりませんでした: https://stackoverflow.com/questions/13784792/cef3-application-crash-fault-module-コメントのkernelbase-dll ...