四联光电智能照明论坛
标题:
清除webBrowser 缓存和Cookie的解决方案
[打印本页]
作者:
admin
时间:
2016-11-6 09:57
标题:
清除webBrowser 缓存和Cookie的解决方案
通过测试webBrowser与IE缓存和Cookie都存放在Local Settings\Temporary Internet Files,我们可以直接调用IE API进行清除
解决方案1:
public enum ShowCommands : int
{
SW_HIDE = 0,
SW_SHOWNORMAL = 1,
SW_NORMAL = 1,
SW_SHOWMINIMIZED = 2,
SW_SHOWMAXIMIZED = 3,
SW_MAXIMIZE = 3,
SW_SHOWNOACTIVATE = 4,
SW_SHOW = 5,
SW_MINIMIZE = 6,
SW_SHOWMINNOACTIVE = 7,
SW_SHOWNA = 8,
SW_RESTORE = 9,
SW_SHOWDEFAULT = 10,
SW_FORCEMINIMIZE = 11,
SW_MAX = 11
}
复制代码
[DllImport("shell32.dll")]
static extern IntPtr ShellExecute( IntPtr hwnd, string lpOperation, string lpFile, string lpParameters, string lpDirectory, ShowCommands nShowCmd);
复制代码
//清除IE临时文件
ShellExecute(IntPtr.Zero, "open", "rundll32.exe", " InetCpl.cpl,ClearMyTracksByProcess 255", "", ShowCommands.SW_HIDE);[/code]
其中ClearMyTracksByProcess 可进行选择设置 :
Temporary Internet Files (Internet临时文件)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
Cookies
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2
History (历史记录)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
Form. Data (表单数据)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16
Passwords (密码)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32
Delete All (全部删除)
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255
解决方案2:快速清除webBrowser Cookie
wb.Document.Cookie.Remove(0, (wb.Document.Cookie.Count - 1))
复制代码
作者:
admin
时间:
2016-11-6 10:00
wb.Document.Cookie直接操作一点效果也没有,也无提示,但就是没反应,为啥???
作者:
admin
时间:
2016-11-6 10:02
http://stackoverflow.com/questio ... s-from-windows-form
作者:
admin
时间:
2016-11-6 10:03
https://social.msdn.microsoft.co ... forum=csharpgeneral
作者:
admin
时间:
2016-11-6 12:42
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
作者:
admin
时间:
2016-11-6 13:05
1、设置Cookie
InternetSetCookie(
"https://" + cookie.Domain.ToString(),
cookie.Name.ToString(),
cookie.Value.ToString() + ";expires=Sun,22-Feb-2099 00:00:00 GMT");
2、删除Cookie
InternetSetCookie(url,NULL,L"CookieTest=ValTest;path=path value;expires=Thu, 01-Jan-1970 00:00:01 GMT");
使用InternetSetCookie删除cookie ms没有官方文档。经过无数次的测试之后发现:
1。 删除时一定要传入path参数,而且此参数必须和set是一致.
2。 setcookie是不带path参数则是对当前path起作用(如果url是一个文件的话,MS有问题)
3。 不同path值,即使cookie的名字一样也是两个不同的cookie。所以path很重要啊!
作者:
admin
时间:
2016-11-6 13:47
using System.Runtime.InteropServices;
/// <summary>
/// 设置cookie
/// </summary>
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
string cc = "ASPSESSIONIDQQTDRSSC=ALPJIHIBKHIPMCLKLENBIDOI; username=johnker; password=4725808f46c3ecce6248603e5c189de9; cnzz_a2325923=16; sin2325923; rtime=0; ltime=1330324310890";
//生成新的
foreach (string c in cc.Split(';'))
{
string[] item = c.Split('=');
string name = item[0];
string value = item[1];
InternetSetCookie("www.xxxxx.cn", name, value);
}
webBrowser1.Navigate("http://www.xxx.cn/admin/admin.asp?act=ArticleMng&page=");
复制代码
纠结中,代码可以过的去,但还是登录不成功,那个cookie值得到的是可用的,运行后去C:\Documents and Settings\Administrator\Cookies目录下也没看到相关生成的ck文件,也没法正常登录网站。
请问我是哪里作错了吗?上面的是我从中抽取出来的代码。
作者:
admin
时间:
2016-11-6 22:39
//这个方法可以创建一个清除当前页面下指定域的所有cookie
//必须是可以访问的域,比如你访问的是qq.com,那么可以清除
www.qq.com
,qzone.qq.com等页面的cookie
//但是不能清除baidu.com这样的cookie. 明白吗? 不是一个域下的是无法清除的
public string GetClearCookieJs(string domain)
{
return "function delallcookie(domain){var cv=document.cookie.split('; ');var temp;for(var i=0;i<cv.length;i++){temp=cv
.split('=');document.cookie=temp[0]+'=;'+((domain)?'domain='+domain+';':'')+'expires=Thu, 01-Jan-1999 00:00:01 GMT;'}} delallcookie('" + domain + "');";
}
//下面展示如何调用
using mshtml;//这个using 需要从项目中添加引用Microsoft.mshtml
//C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\Microsoft.mshtml.dll
//webBrowser1载入完成后,使用下面的语句,可以清除qq.com域下的所有cookie
//前提是,你必须访问的是qq.com.如果你访问的不是qq.com,是无法清除qq.com域下的cookie的
HTMLDocument doc = (mshtml.HTMLDocument)webBrowser1.Document.DomDocument;
doc.parentWindow.execScript(GetClearCookieJs("qq.com"), "javascript")
作者:
admin
时间:
2016-11-6 22:45
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
private void toolStripButton7_Click(object sender, EventArgs e)
{
MessageBox.Show(webBrowser1.Document.Cookie);
//webBrowser1.Document.Cookie.Remove(0, webBrowser1.Document.Cookie.Length);
//webBrowser1.Document.ExecCommand("ClearAuthenticationCache", false, null);
//InternetSetCookie("http://www.5xhome.com","BDTUJIAID","12345");
//MessageBox.Show(webBrowser1.Document.Cookie);
试了好多办法都改不了webbrowser的coockie呀
作者:
admin
时间:
2016-11-6 22:45
欢迎光临 四联光电智能照明论坛 (http://5xhome.com/)
Powered by Discuz! X3.2