2012-09-04 16 views
6

मैंने टी क्रोमियम के साथ एक ब्राउज़र बनाया है। टीएचरोमियम गतिशील रूप से बनाया गया है। फेसबुक का उपयोग (लॉगिन) प्रक्रिया के अंत में, घटक नष्ट हो गया है। समस्या तब होती है जब घटक फिर से बनाया जाता है वह पिछले सत्र (लॉगिन) के साथ जारी है। मुझे सभी कैश और कुकीज़ साफ़ करने की आवश्यकता है।एम्बेडेड क्रोमियम ब्राउज़र के लिए कैश और कुकीज़ को मैं कैसे साफ़ करूं?

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

मैं इसे नष्ट करने और इस तरह जारी स्मृति:

FreeAndNil(Chromium) 

मुझे क्या करना चाहिए (फोर्स बाहर प्रवेश करें)

कोड नीचे मैं द्वारा घटक बनाने?

+0

ApplicationCacheDisabled: = सच और PageCacheDisabled = true इन विकल्पों –

उत्तर

5

DCEF1:

वहाँ ICefCookieManager प्रबंधक इंटरफ़ेस में DeleteCookies समारोह DCEF1 आवरण में कुकी हटाने के लिए। हालांकि, मैं सभी कुकी हटाने के लिए निम्न कोड की कोशिश की है, लेकिन यह हमेशा मुझे करने में विफल रहा:

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

सौभाग्य से, इस कुकी प्रबंधक का उपयोग कर कुकी हटाने के लिए एक और विकल्प है। उन सभी पर जाएं और विज़िटर फ़ंक्शन में deleteCookie आउटपुट पैरामीटर को सही असाइन करें। कुकी प्रबंधक हो रही से सावधान रहें, यह पहली बार जब आप कहीं नेविगेट बनाया (GetGlobalManager वर्ग समारोह असुरक्षित है, यह ठीक से अनपेक्षित परिणाम के लिए नहीं संभाला है), तो सुनिश्चित करें कि आप नेविगेशन के बाद इस कोड का उपयोग करेंगे:

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; 

डीसीईएफ 3:

डीसीईएफ 3 रैपर में आप निम्न का उपयोग कर सकते हैं। क्रेडिट Eric Santos को जाता है:

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

हैलो @TLama के साथ अच्छा नहीं! आप डीसीएफ के किस संस्करण का उपयोग करते हैं? –

+0

हाय, मैं एसवीएन से सबसे हालिया लोगों में से एक का उपयोग कर रहा हूं, संशोधन 147. – TLama

+0

क्या आप मुझे लिंक डाउनलोड कर सकते हैं? धन्यवाद –

1

TLama आपकी मदद के अपने प्रोजेक्ट के लिए निर्णायक था। मैं आपके अनुभव को साझा करने के लिए आभारी हूं।

इस कोड के साथ मेरी समस्या हल:

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; 

गले