asp.net操作IE浏览器的方法
2017-6-26 8:51:37 独占网络 独占观点
在开发代码的过程中,有时候我们需要书写一个代码去操作浏览器,得到我们需要操作,那么我们今天就来讲一下使用asp.net(C#)操作IE浏览器的方法
先我们操作浏览器的需要用到鼠标,还有键盘的方法,所以需要引入鼠标还有键盘的事件
//得到键盘,按键信息
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int GetKeyState(int nVirtKey);
//键盘操作事件
[DllImport("user32.dll", EntryPoint = "keybd_event", CharSet = CharSet.Auto)]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, uint dwExtraInfo);
//鼠标移动事件
[System.Runtime.InteropServices.DllImport("user32", CharSet = CharSet.Auto)]
static extern bool SetCursorPos(int X, int Y);
//鼠标点击事件
[System.Runtime.InteropServices.DllImport("user32", CharSet = CharSet.Auto)]
private static extern int mouse_event(int dwFlags, int dx, int dy, int cButtons, int dwExtraInfo);
//ShellExecute函数ShowCmd参数可选值
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
}
const int MOUSEEVENTF_MOVE = 0x0001; // 移动鼠标
const int MOUSEEVENTF_LEFTDOWN = 0x0002; //模拟鼠标左键按下
const int MOUSEEVENTF_LEFTUP = 0x0004; //模拟鼠标左键抬起
const int MOUSEEVENTF_RIGHTDOWN = 0x0008;// 模拟鼠标右键按下
const int MOUSEEVENTF_RIGHTUP = 0x0010; //模拟鼠标右键抬起
const int MOUSEEVENTF_MIDDLEDOWN = 0x0020; //模拟鼠标中键按下
const int MOUSEEVENTF_MIDDLEUP = 0x0040; //模拟鼠标中键抬起
const int MOUSEEVENTF_ABSOLUTE = 0x8000;// 标示是否采用坐标
我们得到操作鼠标键盘的方法之后,我们就需要操作得到浏览器的信息。
我们需要引入Microsoft.mshtml,事件才可以操作浏览器信息
下面就是得到浏览器信息的核心代码
//得到浏览器信息
SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindowsClass();
object objFlags = 1;
object objTargetFrameName = "";
object objPostData = "";
object objHeaders = "";
//得到浏览器的窗体方法
SHDocVw.InternetExplorer webBrowser1 = (SHDocVw.InternetExplorer)shellWindows.Item(shellWindows.Count - 1);
//循环浏览器的所有窗体
foreach (SHDocVw.InternetExplorer Browser in shellWindows)
{
//判断打开的是不是百度网站
if (Browser.LocationURL.Contains("www.baidu.com"))
{
//得到网页内容
if (Browser.Document is HTMLDocumentClass)
{
mshtml.IHTMLDocument2 doc2 = (mshtml.IHTMLDocument2)Browser.Document;
HTMLDocumentClass obj = (HTMLDocumentClass)doc2;
//得到窗体的信息
int BrowserH = Screen.PrimaryScreen.WorkingArea.Height - ((IHTMLElement2)obj.documentElement).clientHeight;
//循环得到li标签的信息
foreach (IHTMLElement i in obj.getElementsByTagName("li"))
{
//得到li标签的内容
string content=i.innerText;
鼠标点击网页
mouse_event(MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 100, 100, 0, 0);
}
}
}
}
}
通过上面的例子,大家就可以看到浏览器中网页的标签的内容,也可以点击网页