使 WebBrowser 控件删除其缓存

Make WebBrowser control to delete its cache

所以我正在制作一个登录网站的测试应用程序,如果给定的凭据有效,则将它们分开。当我的网络浏览器成功登录并且程序开始重复处理以检查剩余的凭据时,登录帐户将被缓存。我试过了

Me.WebBrowser1.Refresh(WebBrowserRefreshOption.Completely)

和导航到 about:blank 等其他方法,但即使我重新启动程序 webbrowser1 打开缓存的登录帐户也没有成功。我想在获得良好登录后使网络浏览器处于 rully 重置(启动)状态。

您可以在导航到站点之前禁用缓存(包括 cookie)。

为此,您可以使用 InternetSetOption API 函数并将 INTERNET_OPTION_SUPPRESS_BEHAVIOR(81) 选项的值设置为 INTERNET_SUPPRESS_COOKIE_PERSIST(3) 值。

例子

我尝试了以下示例,该示例在我登录后禁用了缓存 outlook.com,但它就像开始一个新会话一样工作:

Imports System.Runtime.InteropServices
Public Class Form1
    <DllImport("wininet.dll", SetLastError:=True, CharSet:=CharSet.Auto)> _
    Public Shared Function InternetSetOption(hInternet As IntPtr, dwOption As Integer, _
        lpBuffer As IntPtr, dwBufferLength As Integer) As Boolean
    End Function

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim ptr = Marshal.AllocHGlobal(4)
        Marshal.WriteInt32(ptr, 3)
        InternetSetOption(IntPtr.Zero, 81, ptr, 4)
        Marshal.Release(ptr)
        WebBrowser1.Navigate("https://outlook.com")
    End Sub
End Class

要查找有关这些标志的更多信息,请查看 Windows Internet Option Flags

注意:您可以在我的另一个 post.

中找到此答案的 C# 版本 here