我在网上找到一个DELPHI删COOKIE代码,效果不错,就是不稳定.
function GetCookiesFolder:string;
var
pidl:pItemIDList;
buffer:array [ 0..255 ] of char ;
begin
SHGetSpecialFolderLocation(
application.Handle , CSIDL_COOKIES, pidl);
SHGetPathFromIDList(pidl, buffer);
result:=strpas(buffer);
end;function ShellDeleteFile(sFileName: string): Boolean;
var
FOS: TSHFileOpStruct;
begin
FillChar(FOS, SizeOf(FOS), 0); {记录清零}
with FOS do
begin
wFunc := FO_DELETE;//删除
pFrom := PChar(sFileName);
fFlags := FOF_NOCONFIRMATION;
end;
Result := (SHFileOperation(FOS) = 0);
end;procedure DelCookie;
var
dir:string;
begin
try
InternetSetOption(nil, INTERNET_OPTION_END_BROWSER_SESSION , nil, 0);
///有时候断网后,执行到这个地方,卡住
dir:=GetCookiesFolder;
ShellDeleteFile(dir+'\*.txt'+#0);
except on e:exception do
Abort;
end;
end;
InternetSetOption(nil, INTERNET_OPTION_END_BROWSER_SESSION , nil, 0);
问题就在这一句代码里面,有时候就执行到这一句就卡住了,用try except do end; 捕捉不到错误.
function GetCookiesFolder:string;
var
pidl:pItemIDList;
buffer:array [ 0..255 ] of char ;
begin
SHGetSpecialFolderLocation(
application.Handle , CSIDL_COOKIES, pidl);
SHGetPathFromIDList(pidl, buffer);
result:=strpas(buffer);
end;function ShellDeleteFile(sFileName: string): Boolean;
var
FOS: TSHFileOpStruct;
begin
FillChar(FOS, SizeOf(FOS), 0); {记录清零}
with FOS do
begin
wFunc := FO_DELETE;//删除
pFrom := PChar(sFileName);
fFlags := FOF_NOCONFIRMATION;
end;
Result := (SHFileOperation(FOS) = 0);
end;procedure DelCookie;
var
dir:string;
begin
try
InternetSetOption(nil, INTERNET_OPTION_END_BROWSER_SESSION , nil, 0);
///有时候断网后,执行到这个地方,卡住
dir:=GetCookiesFolder;
ShellDeleteFile(dir+'\*.txt'+#0);
except on e:exception do
Abort;
end;
end;
InternetSetOption(nil, INTERNET_OPTION_END_BROWSER_SESSION , nil, 0);
问题就在这一句代码里面,有时候就执行到这一句就卡住了,用try except do end; 捕捉不到错误.
uses WinInet;procedure TForm1.Button1Click(Sender: TObject);
var
H:Integer;
T:PInternetCacheEntryInfo;
D:DWORD;
begin
D:=0;
FindFirstUrlCacheEntry(nil,TInternetCacheEntryInfo(nil^),D);
GetMem(T,D);
if D>0 then T.dwStructSize:=D;
H:=FindFirstUrlCacheEntry(nil,T^,D);
if H<>0 then
repeat
if T^.CacheEntryType=1048577 then
DeleteUrlCacheEntry(T^.lpszSourceUrlName);
FreeMem(T,D);
D:=0;
FindnextUrlCacheEntry(H, TInternetCacheEntryInfo(nil^), D);
GetMem(T,D);
if D>0 then T.dwStructSize:=D;
until not FindNextUrlCacheEntry(H, T^, D);
FreeMem(T,D);
FindCloseUrlCache(H);
end;
你观察了你的COOKIES文件夹了么,下面还有文件存在?