打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
如何使用wininet获取一个域名下的所有Cookie

如何使用wininet获取一个域名下的所有Cookie [问题点数:55分,结帖人lxfan]

如何使用wininet获取一个域名下的所有Cookie [问题点数:55分,结帖人lxfan]

楼主 发表于: 2009-10-18 20:03:09
如题,我知道有 InternetGetCookie 这个方法可以得到指定的cookie,但是无法获取全部的Cookie,有什么办法能获取一个域名下的所有 cookie 么?
回复次数:2
#1 得分:25 回复于: 2009-10-19 10:03:10
FindFirstUrlCache/FindNextUrlCache
遍历获取所有的cookie,然后查找对应域名的cookie
#2 得分:30 回复于: 2009-10-23 09:25:24
C/C++ code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
int WINAPI EnumerateCacheOld(HWND hX)
{
    DWORD dwEntrySize;
    LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry;
    DWORD MAX_CACHE_ENTRY_INFO_SIZE = 4096;
    HANDLE hCacheDir;
    int nCount=0;
    SendDlgItemMessage(hX,IDC_CacheList,LB_RESETCONTENT,0,0);
     
    SetCursor(LoadCursor(NULL,IDC_WAIT));
    dwEntrySize = MAX_CACHE_ENTRY_INFO_SIZE;
    lpCacheEntry = 
              (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
    lpCacheEntry->dwStructSize = dwEntrySize;
again:
    if (!(hCacheDir = FindFirstUrlCacheEntry(NULL,
                                             lpCacheEntry,
                                             &dwEntrySize)))
    {
        delete[]lpCacheEntry;
        switch(GetLastError())
        {
            case ERROR_NO_MORE_ITEMS: 
                char tempout[80];
                sprintf_s(tempout, 
                         80,   
                         "The number of cache entries = %d \n",
                         nCount);
                MessageBox(hX,tempout,"Cache Enumeration",MB_OK);
                FindCloseUrlCache(hCacheDir);
                SetCursor(LoadCursor(NULL,IDC_ARROW));
                return TRUE;
                break;
            case ERROR_INSUFFICIENT_BUFFER:
                lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) 
                                new char[dwEntrySize];
                lpCacheEntry->dwStructSize = dwEntrySize;
                goto again;
                break;
            default:
                ErrorOut( hX,GetLastError(),
                          "FindNextUrlCacheEntry Init");
                FindCloseUrlCache(hCacheDir);
                SetCursor(LoadCursor(NULL,IDC_ARROW));
                return FALSE;
        }
    }
    SendDlgItemMessage(hX,IDC_CacheList,LB_ADDSTRING,
                       0,(LPARAM)(lpCacheEntry->lpszSourceUrlName));
    nCount++;
    delete (lpCacheEntry);
    do 
    {
        dwEntrySize = MAX_CACHE_ENTRY_INFO_SIZE;
        lpCacheEntry = 
                 (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
        lpCacheEntry->dwStructSize = dwEntrySize;
retry:
        if (!FindNextUrlCacheEntry(hCacheDir,
                                   lpCacheEntry, 
                                   &dwEntrySize))
        {
            delete[]lpCacheEntry;
            switch(GetLastError())
            {
                case ERROR_NO_MORE_ITEMS: 
                    char tempout[80];
                    sprintf_s(tempout,
                             80,
                             "The number of cache entries = 
                             %d \n",nCount);
                    MessageBox(hX,
                               tempout,
                               "Cache Enumeration",MB_OK);
                    FindCloseUrlCache(hCacheDir);
                    return TRUE;
                    break;
                case ERROR_INSUFFICIENT_BUFFER:
                    lpCacheEntry = 
                             (LPINTERNET_CACHE_ENTRY_INFO) 
                              new char[dwEntrySize];
                    lpCacheEntry->dwStructSize = dwEntrySize;
                    goto retry;
                    break;
                default:
                    ErrorOut(hX,
                             GetLastError(),
                             "FindNextUrlCacheEntry Init");
                              FindCloseUrlCache(hCacheDir);
                return FALSE;
            }
        }
        SendDlgItemMessage(hX,
                           IDC_CacheList,LB_ADDSTRING,
                           0,
                          (LPARAM)(lpCacheEntry->lpszSourceUrlName));
        nCount++;
        delete[] lpCacheEntry;        
    }  while (TRUE);
    SetCursor(LoadCursor(NULL,IDC_ARROW));
    return TRUE;        
}


C/C++ code?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
int WINAPI GetCacheEntryInfo(HWND hX,LPSTR lpszUrl)
{
    DWORD dwEntrySize=0;
    LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry;
    char strTemp[80];
    DWORD dwTemp;
    SetCursor(LoadCursor(NULL,IDC_WAIT));
    if (!GetUrlCacheEntryInfo(lpszUrl,NULL,&dwEntrySize))
    {
        if (GetLastError()!=ERROR_INSUFFICIENT_BUFFER)
        {
            ErrorOut(hX,GetLastError(),"GetUrlCacheEntryInfo");
            SetCursor(LoadCursor(NULL,IDC_ARROW));
            return FALSE;
        }
        else
            lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) 
                            new char[dwEntrySize];
    }
    else
        return FALSE; // should not be successful w/ NULL buffer
                      // and 0 size
    if (!GetUrlCacheEntryInfo(lpszUrl,lpCacheEntry,&dwEntrySize))
    {
        ErrorOut(hX,GetLastError(),"GetUrlCacheEntryInfo");
        SetCursor(LoadCursor(NULL,IDC_ARROW));
        return FALSE;
    }
    else
    {
        if ((lpCacheEntry->dwHeaderInfoSize)!=0)
        {
            LPSTR(lpCacheEntry->lpHeaderInfo)
                                [lpCacheEntry->dwHeaderInfoSize]='\0';
            SetDlgItemText(hX,IDC_Headers,
                           LPSTR(lpCacheEntry->lpHeaderInfo));
        }
        else
        {
            SetDlgItemText(hX,IDC_Headers,"None");
        }
        SetCursor(LoadCursor(NULL,IDC_ARROW));
        return TRUE;
    }
         
}
 
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
mfc改变鼠标形状
ActiveX 改变光标的图形
VC中实现历史记录的全面清除
SetCursor,LoadCursor
VC++6.0 设置光标(鼠标)形状的方法
自定义鼠标
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服