• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 用VC清除瀏覽痕跡

    發表于:2007-07-14來源:作者:點擊數: 標簽:
    作者: 唐燦、喻志成 上機瀏覽,總要留下一些痕跡。手工一一清除,實在煩人。那么,就讓我們用編程來一勞永逸地清除瀏覽痕跡吧。 1.清除指定目錄下的文件 眾所周知,大多數的“垃圾”都放在指定的文件夾下,你只需刪除這些文件即可。 使用Windows API中的Dele
    作者: 唐燦、喻志成

    上機瀏覽,總要留下一些痕跡。手工一一清除,實在煩人。那么,就讓我們用編程來一勞永逸地清除瀏覽痕跡吧。

    1.清除指定目錄下的文件
    眾所周知,大多數的“垃圾”都放在指定的文件夾下,你只需刪除這些文件即可。

    使用Windows API中的DeleteFile函數即可作到這一點。我們可以將它作成一個較完善的函數,用于刪除指定文件夾下的選定類型文件。函數擴充代碼如下:

    void DelMyPointFile(LPSTR name,LPSTR CurrentPath)
    {
    //刪除指定路徑下的指定文件,支持通配符
    //name:被刪除的文件;CurrentPath:找到的文件路徑
    WIN32_FIND_DATA FileData;
    HANDLE hSearch;
    char szHome[MAX_PATH];
    //char szFile[MAX_PATH];
    DWORD RightWrong;
    //HDC MyDiaDC;
    DWORD NameLength;
    //當前的程序路徑
    RightWrong=GetCurrentDirectory(MAX_PATH,szHome);
    RightWrong=SetCurrentDirectory(CurrentPath);
    //保存程序執行路徑,然后,把當前路徑設定為需要查找的路徑
    hSearch = FindFirstFile(name, &&FileData);
    if (hSearch!= INVALID_HANDLE_VALUE)
    {
    NameLength=lstrlen(FileData.cFileName);
    DeleteFile(FileData.cFileName);
    while(FindNextFile(hSearch,&&FileData))
    {
    //找下一個文件,找到一個刪除一個
    NameLength=lstrlen(FileData.cFileName);
    DeleteFile(FileData.cFileName);
    }
    FindClose(hSearch);
    //關閉查找句柄
    }
    RightWrong=SetCurrentDirectory(szHome);
    }


    有了這個函數,你就可以用以下代碼清除文檔選單、系統臨時目錄和IE臨時目錄。

    char WindowRecentPath[]="\\Recent";
    char WindowTemp[]="\\temp";
    char WindowIETemp[]="\\Temporary Internet Files";
    char WindowCookie[]="\\Cookies";
    char szWindowsPath[MAX_PATH];
    char szDelPath[MAX_PATH];
    ...
    GetWindowsDirectory(szWindowsPath,MAX_PATH);
    lstrcpy(szDelPath,szWindowsPath);
    lstrcat(szDelPath,WindowRecentPath);
    //刪除window最近使用的文件列表
    DelMyPointFile("*.*",szDelPath);
    lstrcpy(szDelPath,szWindowsPath);
    lstrcat(szDelPath,WindowTemp);
    //刪除window臨時文件
    DelMyPointFile("*.*",szDelPath);
    lstrcpy(szDelPath,szWindowsPath);
    lstrcat(szDelPath,WindowIETemp);
    //刪除window IE臨時文件
    DelMyPointFile("*.*",szDelPath);


    2.“歷史記錄”的清除
    IE的“歷史記錄”一直讓人頭疼不已,即使你把“歷史記錄”設定為零天同樣能保存當天的內容;嘗試用文件刪除,卻因為文件處于加載模式而此路不通;翻遍MSDN中也找不到可以利用的API。幸好IE自身的清除功能可以作到這一點。IE是一個典型的COM構件,我們可以通過調用它的組件模塊來直接清除“歷史記錄”。

    HRESULT ClearHistory()
    {
    //建立IUrlHistoryStg2組件指針
    IUrlHistoryStg2 * pUrlHistoryStg2=NULL;
    //初始化COM庫
    CoInitialize(NULL);
    //建立客戶對象
    HRESULT hr=CoCreateInstance(CLSID_CUrlHistory,NULL,CLSCTX_INPROC,IID_IUrlHistoryStg2,(void?)&&pUrlHistoryStg2);
    if(SUCCEEDED(hr))
    {
    //接口調用
    hr=pUrlHistoryStg2->ClearHistory();
    pUrlHistoryStg2->Release();
    }
    //關閉COM庫的聯接
    CoUninitialize();
    return hr;
    }


    3.清除下拉cache列表
    IE的下拉cache列表隨時保存你瀏覽過的網址,而以上的代碼卻不能清除它。Windows API中提供了FindNextUrlCacheEntry、DeleteUrlCacheEntry和FindFirstUrlCacheEntry三個函數用于清除,使用上略有點麻煩。而在Window 9X中有一個更加偷懶的辦法,即直接刪除注冊表。代碼如下:

    void DelRegCache()
    {
    //刪除注冊表中保存的IE cache中的記錄
    LPCSTR RootKey="HKEY_CURRENT_USER";
    LPCSTR SubKey="Software\\Microsoft\\Internet Explorer\\TypedURLs";
    RegDeleteKey(HKEY_CURRENT_USER,SubKey);
    }
    Cookie的刪除
    Cookie保存在系統目錄的Cookies子目錄中,如果沒有打開IE,則可直接刪除。如果打開IE,由于它會保存一部分在內存中,你可以使用以下代碼刪除。
    InternetSetOption(0, INTERNET_OPTION_END_BROWSER_SESSION, 0, 0);
    lstrcpy(szDelPath,szWindowsPath);
    lstrcat(szDelPath,WindowCookie);
    //刪除window IE臨時文件
    DelMyPointFile("*.*",szDelPath);


    以上代碼在VC++ 6.0、Windows 98下運行通過,可以滿足平時的大多數使用需要。然而,以上代碼中DelMyPointFile功能較為單一,只能刪除目錄下的文件,對于子目錄就無能為力了。有興趣的讀者可以自己編寫一個遞歸過程來完善它的功能。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>