2012-08-30 161 views
3

我想在WebBrowser完成其瀏覽後清除WebBrowser控件歷史記錄。清除WebBrowser控件瀏覽歷史記錄

+0

什麼歷史是你想清除存儲的文件和設置?你的訪客?如果是這樣,我相當確信這是不可能的。如果你試圖清除你自己的,爲什麼不使用隱私瀏覽(可用int FF,Chrome和Safari - 不知道有關IE)。 – CoderMarkus

+0

我已經在visual studio c#/ .net中創建了簡單的webbrowsing應用程序。我想清除我的應用程序的歷史記錄,我將瀏覽使用我的應用程序瀏覽歷史記錄將佔用空間,所以我想在瀏覽後清除它 –

+0

您將如何做,取決於您如何實現HTML顯示。您是使用嵌入式IE控件還是什麼? –

回答

8

Temporary Internet Files文件

System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 8") 

餅乾()

System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 2") 

歷史()

System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 1") 

表(數據)

System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 16") 

密碼

System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 32") 

刪除(全部)

System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 255") 

全部刪除 - 也刪除由加載項

System.Diagnostics.Process.Start("rundll32.exe", "InetCpl.cpl,ClearMyTracksByProcess 4351") 
+0

這看起來非常類似於[這個答案](http://stackoverflow.com/a/11965922/5174469)...;) –

+0

謝謝......想知道如何安全地允許導航而不保存數據。 –

1

System.Windows.Forms.WebBrowse控件的歷史狀態是內部的,不能直接修改。所有操作均通過GoBackGoForward方法執行。

通過將CanGoBackCanGoForward屬性設置爲false,可以防止用戶往回移動。您還需要修改AllowWebBrowserDropWebBrowserShortcutsEnabledIsWebBroserContextMenuEnabled屬性。

因爲歷史只是通過這些方法,屬性和用戶操作暴露出來的,所以不需要清除內部歷史狀態,因爲用戶無法對其進行操作。請注意,會話歷史記錄(即後退/前進按鈕)與「瀏覽器歷史記錄」(您在IE中的歷史記錄面板中看到的內容)是分離的概念。

請注意,其他程序中包含的WebBrowser實例可能會寫入Windows用戶的IE歷史記錄文件,但我不確定。如果他們真的這麼做,我懷疑你有什麼可以做的。

1

其實,有兩種類型的歷史。一個是「訪問」頁面列表,另一個是您在IE歷史記錄用戶界面中看到的實際歷史記錄。

如果要刪除訪問的頁面列表,則需要使用DeleteUrlCacheEntry刪除每個項目。通過循環使用FindFirst/NextUrlCacheEntry API,您可以訪問這些項目創建的時間和日期,因此只能刪除在瀏覽器會話啓動之後和完成之前創建的項目。

對於FindFirst/NextUrlCacheEntry和DeleteUrlCacheEntry信息,可以使用聯機預寫代碼,然後創建篩選器以便確定在循環訪問這些緩存時要刪除哪些項目條目。

讓我知道我是否可以得到進一步的幫助。

+0

Hiya @Erx你能提供一些實際的代碼嗎?也許是一個URL? –