2012-09-04 14 views
6

TChromium ile bir tarayıcı oluşturdum. TChromium dinamik olarak oluşturulur. Facebook erişimi (oturum aç) İşlemin sonunda, bileşen yok edilir. Sorun, bileşen yeniden oluşturulduğunda ortaya çıkıyor Önceki oturumla (oturum açma) devam ediyor. Tüm önbelleği ve çerezleri temizlemem gerekiyor.Gömülü bir Chromium tarayıcısının önbelleğini ve çerezlerini nasıl temizlerim?

FreeAndNil(Chromium) 

ne yapmalıyım: Onu yok ve böyle belleğini serbest

var 
   Chromium: TChromium; 
begin 
   try 
     Chromium := TChromium.Create(nil); 
     Chromium.SetParentComponent(Form1); 
     Chromium.Align := alClient; 
     chromium.Browser.MainFrame.LoadUrl('www.facebook.com'); 

: (Kuvvet Günlüğü dışarı) Kodun altında

Ben tarafından bileşeni oluşturmak?

+0

ApplicationCacheDisabled

procedure TForm1.Button1Click(Sender: TObject); var CookieManager: ICefCookieManager; begin CookieManager := TCefCookieManagerRef.GetGlobalManager; CookieManager.VisitAllCookiesProc( function(const name, value, domain, path: ustring; secure, httponly, hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; count, total: Integer; out deleteCookie: Boolean): Boolean begin deleteCookie := True; ShowMessage('A cookie from domain ' + domain + ' will be unmercifully ' + 'deleted!'); end ); end; 

sarılmak: = true ve bu seçeneklerin –

cevap

5

DCEF1:

ICefCookieManager yöneticisi arayüzünde DeleteCookies işlevi var DCEF1 ambalajında ​​çerezleri silin. Ancak, ben tüm çerezleri silmek için aşağıdaki kodu denedim, ama her zaman bana başarısız oldu:

procedure TForm1.Button1Click(Sender: TObject); 
var 
    CookieManager: ICefCookieManager; 
begin 
    CookieManager := TCefCookieManagerRef.GetGlobalManager; 
    if not CookieManager.DeleteCookies('', '') then 
    ShowMessage('DeleteCookies failed!'); 
end; 

Neyse ki, bu çerez yöneticisini kullanarak çerezleri silmek için başka bir seçenek yoktur. Bunların hepsini ziyaret edin ve ziyaretçi işlevi deleteCookie çıkış parametresine True atayın. çerez yöneticisi alma konusunda dikkatli olun, bir yere gitmek ilk defa yaratmış böylece navigasyon sonra bu kodu kullanacağız emin olun (GetGlobalManager sınıf işlevi düzgün beklenmedik sonuç için ele değil, güvensiz):

procedure TForm1.Button1Click(Sender: TObject); 
var 
    CookieManager: ICefCookieManager; 
begin 
    CookieManager := TCefCookieManagerRef.GetGlobalManager; 
    CookieManager.VisitAllCookiesProc(
    function(const name, value, domain, path: ustring; secure, httponly, 
     hasExpires: Boolean; const creation, lastAccess, expires: TDateTime; 
     count, total: Integer; out deleteCookie: Boolean): Boolean 
    begin 
     deleteCookie := True; 
     ShowMessage('A cookie from domain ' + domain + ' will be unmercifully ' + 
     'deleted!'); 
    end 
); 
end; 

DCEF3:

DCEF3 sarıcısındaki aşağıdakileri kullanabilirsiniz. Kredi Eric Santos gider:

type 
    CefTask = class(TCefTaskOwn) 
    procedure Execute; override; 
    end; 

procedure CefTask.Execute; 
var 
    CookieManager: ICefCookieManager; 
begin 
    CookieManager := TCefCookieManagerRef.Global; 
    CookieManager.DeleteCookies('', ''); 
end; 

procedure ClearCookies; 
var 
    Task: CefTask; 
begin 
    Task := CefTask.Create; 
    CefPostTask(TID_IO, Task); 
end; 
+0

Merhaba @TLama pek iyi PageCacheDisabled = true! Sen hangi dcef sürümünü kullanıyorsun? –

+0

Merhaba, SVN en revizyonlarından birini kullanıyorum, revizyon 147. – TLama

+0

Bağlantı indirme işlemini bana iletebilir misin? –

1

tlama yardımın Projem için belirleyici oldu. Deneyiminizi paylaştığınız için minnettarım.

bu kodla sorunumu Çözüldü:

İlgili konular