首页 > 代码库 > 利用WebBrowser实现自动登入功能
利用WebBrowser实现自动登入功能
公司内部改革,对考勤方面做出调整,要求实现办公自动化,在OA进行上下班考勤;作为程序员,突发奇想如何实现自动化考勤应用?
需求如下:
- 可设置考勤地址、用户信息、上下班时间;
- 根据设置的上下班时间,定时实现自动考勤。
具体实现步骤如下:
- 窗体界面添加考勤地址、用户信息、上班下班时间、WebBrowser控件;
- 将WebBrowser地址更改为考勤地址
- 判断WebBrowser加载完毕后,输入用户、密码信息,点登录进入系统
- 采用线程阻塞形式,预估登入进入系统时间,再进入考勤菜单进行考勤
代码实现如下:
public partial class Form1 : Form { /// <summary> /// 计数器判断网页是否加载完毕 /// </summary> int i = 0; //登入计时器 int j = 0; //上班计时器 int m = 0; public Form1() { InitializeComponent(); txtUrl.Enabled = false; txtUser.Enabled = false; txtPwd.Enabled = false; tdtstartTime.Enabled = false; tdtendTime.Enabled = false; wm = GetWork(); webBrowser.Url = wm.Url; webBrowser.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBw_DocumentCompleted); webBrowser.Navigated += new WebBrowserNavigatedEventHandler(webBrowser_Navigated); } /// <summary> /// 用计数器判断界面是否加载完成 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> void webBrowser_Navigated(object sender, WebBrowserNavigatedEventArgs e) { i++; } void webBw_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e) { i--; if (0 == i) { if (j < 1) { Lognin(); j++; } if (m < 1 && j > 0) { HtmlDocument htmlDoc = webBrowser.Document; HtmlElement txtMenuCodeQuick = htmlDoc.All["MenuCodeQuick"]; if (txtMenuCodeQuick != null) { txtMenuCodeQuick.Focus(); txtMenuCodeQuick.SetAttribute("value", "HR43B"); SendKeys.SendWait("{ENTER}"); m++; } } } } /// <summary> /// 登录 /// </summary> void Lognin() { HtmlDocument htmlDoc = webBrowser.Document; HtmlElement txtUser = htmlDoc.All["txtUserCodeL"]; txtUser.Focus(); if (txtUser != null) { txtUser.SetAttribute("value", wm.User); } SendKeys.SendWait(Keys.Tab.ToString()); HtmlElement txtPassword = htmlDoc.GetElementById("txtPasswordL"); if (txtPassword != null) { txtPassword.SetAttribute("value", wm.Password); } Thread.Sleep(1000); HtmlElement btnDl = htmlDoc.GetElementById("ctl00$ctl00$c1$CB$btnLogin"); btnDl.InvokeMember("click"); Thread.Sleep(1000); } private Workmanger GetWork() { Uri u = new Uri(txtUrl.Text); wm.Url = u; wm.User = txtUser.Text; wm.Password = txtPwd.Text; wm.StratTime = tdtstartTime.Time; wm.EndTime = tdtendTime.Time; return wm; } //根据指定url地址打开页面 void OpenIE(Uri url) { webBrowser.Url = url; } private Workmanger wm = new Workmanger(); void EndWork() { HtmlDocument htmlDoc = webBrowser.Document; HtmlElement rtbText = htmlDoc.All["ctl00_ctl00_c1_H1_WsdBasicToolBar1"]; StringBuilder sb = new StringBuilder(); foreach (HtmlElement item in htmlDoc.All) { sb.AppendLine(item.Id); } File.WriteAllText(@"d:\html.txt", sb.ToString(), Encoding.UTF8); } } /// <summary> /// 考勤系统类 /// </summary> public class Workmanger { /// <summary> /// 地址 /// </summary> public Uri Url { get; set; } /// <summary> /// 用户名 /// </summary> public string User { get; set; } /// <summary> /// 密码 /// </summary> public string Password { get; set; } /// <summary> /// 上班时间 /// </summary> public DateTime? StratTime { get; set; } /// <summary> /// 下班时间 /// </summary> public DateTime? EndTime { get; set; } }
利用WebBrowser实现自动登入功能
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。