PDA

View Full Version : سوال: پاک کردن کوکی با دلفی



sajioo
دوشنبه 23 دی 1392, 07:58 صبح
سلام دوستان من دو تا سوال دارم.
اول اینکه وقتی وب بروزر روی فرمم هست چطوری میشه کوکی هاشو حذف کرد و از بین برد البته با برنامه دلفی؟
اصلا این کوکی ها کجا نگه داری میشه؟
سوال دوم اینکه آیا میشه مثلا کوکی های که گوگل کروم یا فایرفاکس و ... ذخیره کردن با دلفی پاک کرد؟
کسی از اساتید اطلاعاتی در این مورد داره؟ منابع رو گشتم اما جواب خاصی پیدا نکردم:متفکر:

Mask
دوشنبه 23 دی 1392, 11:20 صبح
اول اینکه وقتی وب بروزر روی فرمم هست چطوری میشه کوکی هاشو حذف کرد و از بین برد البته با برنامه دلفی؟
قبلا هم گفتم.مرورگری که رو فرم دارید مرورگر مشتق شده از Internet Explorer شماست .وقتی کوکیهای این مرورگر حذف بشود، یعنی کوکی های مرورگر شما حذف شده.
قبلا در مورد حذف کوکی ها و هیستوری گفتگو شده. بهتره که دقیقتر جستجو کنید.

سوال دوم اینکه آیا میشه مثلا کوکی های که گوگل کروم یا فایرفاکس و ... ذخیره کردن با دلفی پاک کرد؟
بله ان مرورگرها هم کوکی ها رو در بانکهای اطلاعاتی خودشون نگهداری میکنند.مثلا کروم در یانک اطلاعاتی خودش که Sqlite هست ، نگهداری میکنه. که با تحقیق در این مورد ، میتونید به این بانک متصل و کوکی های موجود رو حذف کنید.

sajioo
دوشنبه 23 دی 1392, 12:46 عصر
دوستان من کد زیر رو پیدا کردم اما جواب نداد . هرچی سایتم رفتم همینو پیشنهاد کردن :افسرده:



procedure DeleteIECache;
var
lpEntryInfo: PInternetCacheEntryInfo;
hCacheDir: LongWord;
dwEntrySize: LongWord;
begin
dwEntrySize := 0;
FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize;
hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
if hCacheDir <> 0 then
begin
repeat
DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName );
FreeMem(lpEntryInfo, dwEntrySize);
dwEntrySize := 0;
FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
GetMem(lpEntryInfo, dwEntrySize);
if dwEntrySize > 0 then lpEntryInfo^.dwStructSize := dwEntrySize;
until not FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize);
end;
FreeMem(lpEntryInfo, dwEntrySize);
FindCloseUrlCache(hCacheDir);
end;

BORHAN TEC
دوشنبه 23 دی 1392, 17:50 عصر
سلام
برای پاک کردن کوکی های IE می توانید از کدی مثل کد زید استفاده کنید. تابع اول چیز خاصی نیست و فقط برای پاک کردن محتویات یک دایرکتوری مورد استفاده قرار می گیرد و اگر از دلفی 2010 یا نسخه های جدیدتر استفاده می کنید برای این منظور می توانید از کد بسیار ساده تری استفاده کنید:
function TMainWindow.DelFilesInDir(Filter, Folder: string; Recurse: Boolean):Cardinal;
var
sr: TSearchRec;
sDirList: TStringList;
i: Integer;

{ LOCAL PROCEDURE }
procedure GetSubDirs (Folder: string; sList: TStringList);
var
sr: TSearchRec;
begin
if FindFirst (Folder + '*.*', faDirectory, sr) = 0 then
try
repeat
if (sr.Attr and faDirectory) = faDirectory then
sList.Add (sr.Name);
Application.ProcessMessages;
until FindNext(sr) <> 0;
finally
FindClose(sr);
end;
end;
{END OF LOCAL PROCEDURE}
begin
if FindFirst (Folder + Filter, faAnyFile, sr) = 0 then
repeat
if ((DeleteFile(Folder + sr.Name)=False) or (RemoveDir(Folder + sr.Name)=False))
and (sr.Name <> '.') and (sr.Name <> '..') then
BEGIN
Inc(ErrCount);
END;
Application.ProcessMessages;
until FindNext(sr) <> 0;
FindClose(sr);
if Recurse then
begin
sDirList := TStringList.Create;
try
GetSubDirs (Folder, sDirList);
for i := 0 to sDirList.Count - 1 do
if (sDirList[i] <> '.') and (sDirList[i] <> '..') then
begin
Update;
DelFilesInDir (Filter,
IncludeTrailingPathDelimiter (Folder + sDirList[i]),
Recurse);
end;
finally
sDirList.Free;
end;
end;
end;

//-------------------------------------------------------------------------------------------

procedure TMainWindow.DelCookies;
var
CookiesDir : string;
begin
ErrCount := 0;
regObj.CloseKey;
regObj.RootKey := HKEY_CURRENT_USER;
regObj.OpenKey('Software\Microsoft\Windows\Current Version\Explorer\Shell Folders', True);
CookiesDir := regObj.ReadString('Cookies');

lstItem := lstObjects.Items.Add;
lstItem.Caption := 'Cookies';
lstItem.SubItems.Add('Deleting...');

// ShowMessage(CookiesDir);
if CookiesDir <> '' then
BEGIN
DelFilesInDir('*.*', CookiesDir + '\',True);
if ErrCount = 0 then
lstItem.SubItems[0] := 'Deleted'
else if ErrCount=1 then
lstItem.SubItems[0] := '1 Error happend'
else
lstItem.SubItems[0] := IntTostr(ErrCount) + ' Errors happend';
END
else
lstItem.SubItems[0] := 'Deleted';
end;
موفق باشید...