在C#应用程序中获取和设置IE浏览器Cookie
2010-11-27 21:10
981 查看
最近写程序,需要使用C#应用程序访问一网站,获取相应的Cookie,然后使用该Cookie用IE浏览器打开指定的页面。
恩,好比用QQ打开浏览器自动登录你的QQ空间。
从网上了解了下,一般都是用非托管动态链接库来实现,具体如下:
声明部分代码:
using System.Runtime.InteropServices;
读取函数
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
写入函数
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetGetCookie(string lpszUrlName, string lbszCookieName, StringBuilder lpszCookieData, ref int lpdwSize);
检测错误函数
[DllImport("kernel32.dll")]
public static extern Int32 GetLastError();
使用部分代码
设置cookie
if (!InternetSetCookie("http://xxxx/xxxx.htm", "Test", "Sent as Test via VB+ ;expires=Sun,22-Feb-2099 00:00:00 GMT"))
{
MessageBox.Show(GetLastError().ToString());
}
读取cookie
int size = 1000;
StringBuilder cookie = new StringBuilder(size);
if (!InternetGetCookie("http://xxxx/xxxx.htm", "Test", cookie, ref size))
{
MessageBox.Show(GetLastError().ToString());
}
else
{
MessageBox.Show(cookie.ToString());
}
需要注意的几点:
1、StringBuilder lpszCookieData, ref int lpdwSize 这两个变量并非绝对如此设置, 也有设置成string和long类型的,根据需要选择
2、设置cookie有两种,一种是会话级的,即脱离会话cookie即清楚,一种是持久性的,程序结束也仍然存在,直到超期。
会话级的cookie很特别,因为它是保存在内存中的,所以你在Temporary Internet Files文件夹中是找不到它的,只能在你设置cookie的应用程序中读出。而持久性cookie就可以在Temporary Internet Files文件夹中找到。这种cookie才能进行传递。两种cookie的设置程序是一样的,唯一的区别是持久性cookie设置要在cookie值后附加上“;expires=Sun,22-Feb-2099 00:00:00 GMT",过期时间可以根据需要自定。
顺便补充下如何在C#程序中调用浏览器,代码很简单,如下:
System.Diagnostics.Process.Start("http://www.google.com");//默认浏览器
System.Diagnostics.Process.Start("IEXPLORE.EXE","http://expert.csdn.net") ;//指定浏览器
其实该函数可以做的事情还很多,下面是MSDN说明
该函数MSDN说明
恩,好比用QQ打开浏览器自动登录你的QQ空间。
从网上了解了下,一般都是用非托管动态链接库来实现,具体如下:
声明部分代码:
using System.Runtime.InteropServices;
读取函数
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetSetCookie(string lpszUrlName, string lbszCookieName, string lpszCookieData);
写入函数
[DllImport("wininet.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern bool InternetGetCookie(string lpszUrlName, string lbszCookieName, StringBuilder lpszCookieData, ref int lpdwSize);
检测错误函数
[DllImport("kernel32.dll")]
public static extern Int32 GetLastError();
使用部分代码
设置cookie
if (!InternetSetCookie("http://xxxx/xxxx.htm", "Test", "Sent as Test via VB+ ;expires=Sun,22-Feb-2099 00:00:00 GMT"))
{
MessageBox.Show(GetLastError().ToString());
}
读取cookie
int size = 1000;
StringBuilder cookie = new StringBuilder(size);
if (!InternetGetCookie("http://xxxx/xxxx.htm", "Test", cookie, ref size))
{
MessageBox.Show(GetLastError().ToString());
}
else
{
MessageBox.Show(cookie.ToString());
}
需要注意的几点:
1、StringBuilder lpszCookieData, ref int lpdwSize 这两个变量并非绝对如此设置, 也有设置成string和long类型的,根据需要选择
2、设置cookie有两种,一种是会话级的,即脱离会话cookie即清楚,一种是持久性的,程序结束也仍然存在,直到超期。
会话级的cookie很特别,因为它是保存在内存中的,所以你在Temporary Internet Files文件夹中是找不到它的,只能在你设置cookie的应用程序中读出。而持久性cookie就可以在Temporary Internet Files文件夹中找到。这种cookie才能进行传递。两种cookie的设置程序是一样的,唯一的区别是持久性cookie设置要在cookie值后附加上“;expires=Sun,22-Feb-2099 00:00:00 GMT",过期时间可以根据需要自定。
顺便补充下如何在C#程序中调用浏览器,代码很简单,如下:
System.Diagnostics.Process.Start("http://www.google.com");//默认浏览器
System.Diagnostics.Process.Start("IEXPLORE.EXE","http://expert.csdn.net") ;//指定浏览器
其实该函数可以做的事情还很多,下面是MSDN说明
该函数MSDN说明
名称 | 说明 |
---|---|
Process.Start () | 启动(或重用)此 Process 组件的 StartInfo 属性指定的进程资源,并将其与该组件关联。 由 .NET Compact Framework 支持。 |
Process.Start (ProcessStartInfo) | 启动由包含进程启动信息(例如,要启动的进程的文件名)的参数指定的进程资源,并将该资源与新的 Process 组件关联。 由 .NET Compact Framework 支持。 |
Process.Start (String) | 通过指定文档或应用程序文件的名称来启动进程资源,并将资源与新的 Process 组件关联。 |
Process.Start (String, String) | 通过指定应用程序的名称和一组命令行参数来启动一个进程资源,并将该资源与新的 Process 组件相关联。 由 .NET Compact Framework 支持。 |
Process.Start (String, String, SecureString, String) | 通过指定应用程序的名称、用户名、密码和域来启动一个进程资源,并将该资源与新的 Process 组件关联起来。 |
Process.Start (String, String, String, SecureString, String) | 通过指定应用程序的名称和一组命令行参数、用户名、密码和域来启动一个进程资源,并将该资源与新的 Process 组件关联起来。 |
相关文章推荐
- 在C#应用程序中获取和设置IE浏览器Cookie
- 在C#应用程序中获取和设置IE浏览器Cookie
- 在C#应用程序中获取和设置IE浏览器Cookie
- 获取和设置c# 应用程序目录
- 在C#应用程序中获取和设置IE浏览器Cookie
- 获取和设置c# 应用程序目录
- 获取和设置c# 应用程序目录
- [C#]使用 C# 代码实现拓扑排序 dotNet Core WEB程序使用 Nginx反向代理 C#里面获得应用程序的当前路径 关于Nginx设置端口号,在Asp.net 获取不到的,解决办法 .Net程序员 初学Ubuntu ,配置Nignix 夜深了,写了个JQuery的省市区三级级联效果
- 获取和设置c# 应用程序目录
- 获取和设置c# 应用程序目录
- 获取和设置c# 应用程序目录 (转)
- 获取和设置 C# 应用程序目录
- 获取和设置c# 应用程序目录
- 获取和设置c# 应用程序目录
- C# binding textbox 获取编辑后的 设置mode=twoway
- 应用js设置cookie于获取cookie
- C#用WebBrowser与WIN API辅助模拟获取网站完整Cookie
- javascript设置和获取cookie的方法
- 设置cookie与获取cookie
- 【转】c#.net各种应用程序中获取文件路径的方法