BOOL CHistoryClearDlg::DeleteUrlCache(DEL_CACHE_TYPE type)
{
    BOOL bRet = FALSE;
    HANDLE hEntry;
    LPINTERNET_CACHE_ENTRY_INFO lpCacheEntry = NULL;  
    DWORD dwEntrySize;     //delete the files
    dwEntrySize = 0;
    hEntry = FindFirstUrlCacheEntry(NULL, NULL, &dwEntrySize);
    lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
    hEntry = FindFirstUrlCacheEntry(NULL, lpCacheEntry, &dwEntrySize);
    if (!hEntry)
    {
        goto cleanup;
    }    do
    {
        if (type == File &&
            !(lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))
        {
            DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
        }
        else if (type == Cookie &&
            (lpCacheEntry->CacheEntryType & COOKIE_CACHE_ENTRY))
        {
            DeleteUrlCacheEntry(lpCacheEntry->lpszSourceUrlName);
        }        dwEntrySize = 0;
        FindNextUrlCacheEntry(hEntry, NULL, &dwEntrySize);
        delete [] lpCacheEntry; 
        lpCacheEntry = (LPINTERNET_CACHE_ENTRY_INFO) new char[dwEntrySize];
    }
    while (FindNextUrlCacheEntry(hEntry, lpCacheEntry, &dwEntrySize));    bRet = TRUE;
cleanup:
    if (lpCacheEntry)
    {
        delete [] lpCacheEntry; 
    }
    return bRet;
}
发现一个问题: 
我的是unicode工程,尝试将DeleteUrlCacheEntry换成DeleteUrlCacheEntryW时出现 
error C2065: 'DeleteUrlCacheEntryW' : undeclared identifier 
而将FindFirstUrlCacheEntry和FindNextUrlCacheEntry分别换成FindFirstUrlCacheEntryW和FindNextUrlCacheEntryW则没有这种问题。难道是VC6版本过老,有Bug还是什么?我是VC6(sp6).紧急求助!

解决方案 »

  1.   

    应该有这个函数。更新下SDK试试
      

  2.   

    本人初学者,请问怎样更新SDK啊,我一般只是去下载我需要的Lib文件。
      

  3.   

    我不知道应该下哪个SDK。要是能之下一个Lib文件更好。
      

  4.   

    确认DeleteUrlCacheEntryW是否真的存在。这是2003版MSDN SDK 函数说明,已经使用UNICODE参数了。
    BOOL DeleteUrlCacheEntry(
      LPCTSTR lpszUrlName
    );
      

  5.   

    我的是vc6,
    BOOLAPI
    DeleteUrlCacheEntry(
        IN LPCSTR lpszUrlName
        );
    请问怎么办啊?
      

  6.   

    哪里下载最新的WinInet sdk啊?vc6用的。
      

  7.   

    安装一个新一点的SDK,或者自己定义函数,用LoadLibrary、GetProcAddress来调用。
      

  8.   

    我正在下一个XP上用的vc6 sdk,太大了,能不能直接替换最新的WinInet.h和WinInet.lib啊?
      

  9.   

    可以试一下。
    其实用LoadLibrary、GetProcAddress是很容易的,有这时间应该已经改完了。