利用WebBrowser实现自动登入功能

本文介绍了一种基于WebBrowser控件的自动化考勤系统实现方案,通过设置考勤地址、用户信息及上下班时间,利用C#编程实现定时自动考勤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

公司内部改革,对考勤方面做出调整,要求实现办公自动化,在OA进行上下班考勤;作为程序员,突发奇想如何实现自动化考勤应用?

需求如下:

  1. 可设置考勤地址、用户信息、上下班时间;
  2. 根据设置的上下班时间,定时实现自动考勤。

具体实现步骤如下:

  1. 窗体界面添加考勤地址、用户信息、上班下班时间、WebBrowser控件;
  2. 将WebBrowser地址更改为考勤地址
  3. 判断WebBrowser加载完毕后,输入用户、密码信息,点登录进入系统
  4. 采用线程阻塞形式,预估登入进入系统时间,再进入考勤菜单进行考勤

代码实现如下:

    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; }
    }

 

转载于:https://www.cnblogs.com/tuqun/p/4155465.html

什么是wke? WebKit 是一个开源的浏览器引擎,同时WebKit 也是苹果Mac OS X 系统引擎框架版本的名称,主要用于Safari,Dashboard,Mail 和其他一些Mac OS X 程序。WebKit 前身是 KDE 小组的 KHTML,WebKit 所包含的 WebCore 排版引擎和 JSCore 引擎来自于 KDE 的 KHTML 和 KJS,当年苹果比较了 Gecko 和 KHTML 后,仍然选择了后者,就因为它拥有清晰的源码结构、极快的渲染速度。 app le将 KHTML 发扬光大,推出了装备 KHTML 改进型 WebKit 引擎的浏览器 Safari。Safari, Google Chrome,傲游3,猎豹浏览器,百度浏览器 opera浏览器 等都是基于 Webkit 开发。,Webkit作为一款优秀的浏览器内核,它众多优秀的特性引起业内的的广泛关注。尤其是近来,google的加更是让Webkit有所升温,从 Goole Chrome浏览器, Goole Anroid手机操作系统内置浏览器均采用Webkit作为内核。 源码介绍: 1、HTML是目前在用户体验、界面舒适度最先进的语言 2、HTML所有标签都是容器,CSS调试效果方便 3、最重要的一点,让做界面的去界面,写程序的去写程序吧,界面与程序分享得更彻底 4、支持js、jq和易语言 交互! 5、页面文件由photoshop切片直接得到,文件包中带psd文件; 6、支持FLASH; 7、网页文件可以放在服务器上(如果你有虚拟机或者云主机的话), 也可以加密打包后,内存加载;还可以放在资源表里;防止界面代码泄露; 例子中,做了简单的交互示例。并无实际功能! 本例程仅演示界面功能,实际开发需添加更多功能代码;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值