最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

IE Cookie文件格式說明

 更新時(shí)間:2009年12月31日 02:38:50   作者:  
前幾天寫了個(gè)工具 CookieAdmin 來查看 IE 的 Cookie 有人問到實(shí)現(xiàn)原理,就寫了這篇文章 我不善于寫文檔或文章,所以還是代碼說話吧
IE 的 Cookie 文件保存在 ?:\Documents and Settings\<user>\Cookies 目錄,后綴為.txt
可以直接使用 API SHGetFolderPath 取得 Cookie 文件的保存目錄
不過我沒發(fā)現(xiàn) Delphi2007 有這個(gè) API 的聲明,所以自己聲明了一下
代碼如下(發(fā)現(xiàn)代碼高亮支持 Pascal 了,呵呵)


GetCookieFolder
復(fù)制代碼 代碼如下:

function SHGetFolderPath(hwndOwner: HWND; nFolder: Integer; hToken: HWND;
dwFlags: Word; pszPath: PChar): Boolean; stdcall; external shell32 name 'SHGetFolderPathA';

function GetCookieFolder: string;
var
P: array[0..MAX_PATH] of Char;
begin
SHGetFolderPath(0, CSIDL_COOKIES, 0, 0, @P[0]);
Result := IncludeTrailingBackslash(P);
end;

注意 shell32 常量定義在 ShellAPI.pas 里,CSIDL_COOKIES 定義在 ShlObj.pas 里,記得引用

枚舉 Cookie 文件
GetCookieFiles
復(fù)制代碼 代碼如下:

procedure GetCookieFiles(APath: string; AList:TStrings);
var
Sr: TSearchRec;
begin
if FindFirst(APath + '*.txt', faArchive, Sr) = 0 then
begin
repeat
if Sr.Name[1] = '.' then Continue;

AList.Add(Sr.Name);
until FindNext(Sr) <> 0;

FindClose(Sr);
end;
end;

下面才是重點(diǎn),Cookie 文件的格式,呵呵
Cookie 文件只是個(gè)純粹的文本文件,以換行符(ASCII=10)為分隔符
可以使用 TStringList 讀取,會(huì)自動(dòng)分行的
格式如下
復(fù)制代碼 代碼如下:

a_cookie
.123
my.demo.site

*

其中
第1行為 Cookie 名稱
第2行是 Cookie 的值
第3行是 Cookie 所屬站點(diǎn)的地址
第4行是個(gè)標(biāo)記值(注:準(zhǔn)確來說應(yīng)該是表示該Cookie是否被加密)
第5行為超時(shí)時(shí)間的低位(Cardinal/DWORD)
第6行為超時(shí)時(shí)間的高位
第7行為創(chuàng)建時(shí)間的低位
第8行為創(chuàng)建時(shí)間的高位
第9行固定為 * ,表示一節(jié)的結(jié)束
需要注意的是這里使用的時(shí)間并非 Delphi 的 TDateTime,而是 FILETIME(D里為對(duì)應(yīng)的TFileTime)
一個(gè)文件可能包含有多個(gè)節(jié),按上面的格式循環(huán)即可

下面的代碼將上述時(shí)間轉(zhuǎn)換為 D 里的 TDateTime


ConvertToDateTime
復(fù)制代碼 代碼如下:

function FileTimeToDateTime(FT: TFileTime): TDateTime; inline;
var
ST: TSystemTime;
begin
FileTimeToLocalFileTime(FT, FT);
FileTimeToSystemTime(FT, ST);
Result := SystemTimeToDateTime(ST);
end;

function ConvertToDateTime(L, H: Cardinal): TDateTime;
var
FT: TFileTime;
begin
FT.dwLowDateTime := L;
FT.dwHighDateTime := H;
Result := FileTimeToDateTime(FT);
end;


怎么樣,確實(shí)很簡(jiǎn)單吧?呵呵

相關(guān)文章

最新評(píng)論

柘荣县| 勃利县| 临猗县| 开江县| 石楼县| 南城县| 朝阳区| 铁岭市| 丹东市| 新乐市| 房产| 景洪市| 鄂温| 天气| 扎囊县| 连南| 精河县| 沾益县| 冷水江市| 合川市| 禹城市| 辽阳县| 吴堡县| 理塘县| 浮梁县| 霍林郭勒市| 汝城县| 海南省| 延安市| 曲阜市| 鞍山市| 洛阳市| 汽车| 英超| 长春市| 横峰县| 隆德县| 新宾| 遂昌县| 汉阴县| 青海省|