Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 01.11.2017, 01:59   #1
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию как очистить куки webbrowser ?

как удалит куки webbrowser ?
alman12 вне форума Ответить с цитированием
Старый 01.11.2017, 05:58   #2
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
uses
  WinInet;

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;
Shouldercannon вне форума Ответить с цитированием
Старый 01.11.2017, 15:56   #3
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

но не удаляется !!!
alman12 вне форума Ответить с цитированием
Старый 01.11.2017, 16:00   #4
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Да какая разница куки или кэш, оба ж с К начинаются
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 01.11.2017, 19:47   #5
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

В интернете я нашел вот такой код похожий на код Shouldercannon но не факт что очистит
Код:
uses
  WinInet;

procedure DeleteUserCookies;
var
  lpEntryInfo: PInternetCacheEntryInfo;
  hCacheDir: LongWord;
  dwEntrySize: LongWord;
  dwLastError: LongWord;
begin
  dwEntrySize := 0;
    FindFirstUrlCacheEntry (nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
  GetMem(lpEntryInfo, dwEntrySize);
  hCacheDir :=  FindFirstUrlCacheEntry (nil, lpEntryInfo^, dwEntrySize);
  if (hCacheDir <> 0) AND (lpEntryInfo^.CacheEntryType = (lpEntryInfo^.CacheEntryType OR COOKIE_CACHE_ENTRY)) then
    DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
  FreeMem(lpEntryInfo);
  repeat
    dwEntrySize := 0;
    FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^),
      dwEntrySize);
    dwLastError := GetLastError();
    if (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
    begin
      GetMem(lpEntryInfo, dwEntrySize);
      if (FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) then
        begin
        if lpEntryInfo^.CacheEntryType = (lpEntryInfo^.CacheEntryType OR COOKIE_CACHE_ENTRY) then
          DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
        end;
      FreeMem(lpEntryInfo);
    end;
  until (dwLastError = ERROR_NO_MORE_ITEMS);
end;
Если не очистит то попробуйте сделать следующее.
Делаете в своей программе дополнительную функцию по извлечению инфы из реестра по этой ветке
HKEY_CURRENT_USER\Software\Microsof t\Windows\CurrentVersion\Explorer\U ser Shell Folders параметр Cookies в этом параметре будет путь где хранятся куки, затем зная этот путь зачищаете эту папку

Поэкспериментировав написал 2 примера, очищает 100%
Пример без реестра но тут нужно знать путь к кукам, функции по удалению в нем пригодятся и для второго примера
Код:
uses
ShellAPI,......................................

//Функция удаления и файлов и каталогов
function MyDelete(dir: string): Boolean;
var
fos: TSHFileOpStruct;
begin
ZeroMemory(@fos, SizeOf(fos));
with fos do
begin
wFunc := FO_DELETE;
fFlags := FOF_SILENT or FOF_NOCONFIRMATION;
pFrom := PChar(dir + #0);
end;
Result := (0 = ShFileOperation(fos));
end;

//Функция удаляет весь список файлов, каталогов и подкаталогов нужной папке
procedure DeleteAll(srcPath : string);
Var
SearchRec: TSearchRec;
Begin
IF srcPath[Length(srcPath)]<>'\'then
srcPath := srcPath + '\';
FillChar(SearchRec, SizeOf(TSearchRec), 0);
SearchRec.Attr:= FOF_NOCONFIRMATION or FOF_SILENT;
//крутим список файлов
IF (FindFirst(srcPath+'*.*', faAnyFile, SearchRec)=0) and not (Application.Terminated) then
Repeat
IF(SearchRec.Attr and faDirectory) <> faDirectory then
//Используем функцию удаления для файлов что выше написана
MyDelete(srcPath + SearchRec.Name);

IF((SearchRec.Attr and faDirectory) = faDirectory)and
(SearchRec.Name <> '..')and
(SearchRec.Name <> '.') then
//Используем функцию удаления для каталогов что выше написана
MyDelete(srcPath + SearchRec.Name);
Application.ProcessMessages;
Until FindNext(SearchRec)<>0;
FindClose(SearchRec);
end;

//Метод использования очистки
procedure TForm1.Button1Click(Sender: TObject);
var
sPath: string;
begin
sPath:= GetEnvironmentVariable('USERPROFILE') + '\AppData\Roaming\Microsoft\Windows\Cookies\';
if DirectoryExists(sPath) then
DeleteAll(sPath);
end;
Можно использовать одну функцию MyDelete которая все удаляет но для системных не прокатит поэтому крутим список файлов и каталогов с помощью функции DeleteAll а затем удаляем

Пример с реестром, узнает путь к кукам и удаляет их использовав функции из примера выше
Код:
uses
ShellAPI, Registry......................................

//Функция для извлечения нужной инфы из реестра
function ReadStringParametrReg(KeyRoot: DWORD; KeyPatch, KeyName: string): string;
var
Reg: TRegistry;
begin
Reg:=TRegistry.Create;
try
  with Reg do
   begin
    RootKey := KeyRoot;
    OpenKeyReadOnly(KeyPatch);
    result:= ReadString(KeyName);
   CloseKey;
  end;
  finally
 Reg.Free;
 end;
end;

//Метод использования очистки
procedure TForm1.Button1Click(Sender: TObject);
var
sPath: string;
begin
sPath:= ReadStringParametrReg(HKEY_CURRENT_USER,
'Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders', 'Cookies');
if Pos('%USERPROFILE%', sPath) <> 0 then
sPath:= GetEnvironmentVariable('USERPROFILE') + Copy(sPath, 14, MaxInt);
if DirectoryExists(sPath) then
DeleteAll(sPath);
end;

Последний раз редактировалось Aliens_wolfs; 01.11.2017 в 22:37.
Aliens_wolfs вне форума Ответить с цитированием
Старый 02.11.2017, 13:26   #6
alman12
Форумчанин
 
Регистрация: 30.12.2013
Сообщений: 466
По умолчанию

не работает вовсе не один код
alman12 вне форума Ответить с цитированием
Старый 02.11.2017, 14:29   #7
Aliens_wolfs
Форумчанин
 
Регистрация: 16.12.2009
Сообщений: 902
По умолчанию

Цитата:
не работает вовсе не один код
Ошибки выдает или не очищает?
Вложения
Тип файла: rar ClearCookie.rar (164.8 Кб, 24 просмотров)

Последний раз редактировалось Aliens_wolfs; 02.11.2017 в 14:45.
Aliens_wolfs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как можно сохранит куки webbrowser а в отдельной папке не в том месте где куки хранит Internet explorer ? alman12 Общие вопросы Delphi 0 30.10.2017 02:20
Очистить куки и кеш на компе ByMorgun Общие вопросы Delphi 37 15.06.2014 08:49
Куки WebBrowser #usernamenotfound Работа с сетью в Delphi 1 23.03.2014 14:15
webbrowser и куки doromones Работа с сетью в Delphi 0 15.12.2010 18:08
Как удалить кэш и куки в webbrowser OkeaH Работа с сетью в Delphi 2 15.02.2009 16:58