1、外包公司閒的蛋疼,搞什麼早上簽到,不簽到不扣錢,簽到不多給錢。為了幫助你們解脫,就寫了一個自動打卡程序。
2、一直都想寫這個程序,可是一直沒有思路,知道有個軟件公司找我做自動答題程序,於是自動打卡程序才應運而生。未來可以將自動答題程序開源工大家查看。
3、由於公司是企業域認證,所以需要先認證,然後通過webbrower模擬手動操作。
參考資料如下
C#網頁表單自動填寫實現原理
4、給webBrowser設置網站地址
webBrowser1.Source = new Uri(txtUrl.Text);
然後開啟監控線程
Thread t1 = new Thread(new ThreadStart(Start)) { IsBackground = true };
t1.Start();
start的實現如下
#region 線程入口方法 /// <summary> /// 線程入口方法 /// </summary> public void Start() { this.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate() { btnStart.IsEnabled = false; lblStart.Content = "運行中......"; }); while (true) { DakaType dakaType = DakaType.未知; this.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate() { webBrowser1.Source = new Uri(txtUrl.Text); }); Thread.Sleep(TimeSpan.FromSeconds(10)); this.Dispatcher.Invoke(DispatcherPriority.Normal, (ThreadStart)delegate() { if (DateTime.Now.Hour == 8 && DateTime.Now.Minute > 30) { dakaType = DakaType.上班; mshtml.IHTMLDocument2 document1 = (mshtml.IHTMLDocument2)webBrowser1.Document; mshtml.IHTMLElement 上班 = (mshtml.IHTMLElement)document1.all.item("amGoUnite", 0); if (上班 != null) { 上班.click(); } } if (DateTime.Now.Hour == 18) { dakaType = DakaType.下班; mshtml.IHTMLDocument2 document = (mshtml.IHTMLDocument2)webBrowser1.Document; mshtml.IHTMLElement 下班 = (mshtml.IHTMLElement)document.all.item("pmBackHome", 0); if (下班 != null) { 下班.click(); } } }); if (dakaType == DakaType.上班) { Thread.Sleep(TimeSpan.FromMinutes(1)); } else if (dakaType == DakaType.下班) { Thread.Sleep(TimeSpan.FromMinutes(20)); } else { Thread.Sleep(TimeSpan.FromMinutes(10)); } } } #endregion
代碼講解
mshtml.IHTMLDocument2 document = (mshtml.IHTMLDocument2)webBrowser1.Document; mshtml.IHTMLElement 下班 = (mshtml.IHTMLElement)document.all.item("pmBackHome", 0);
在頁面上找到下班的按鈕的name為pmBackHome的按鈕,然後點擊
if (下班 != null) { 下班.click(); }
設置每天的八點半以後上班打卡以及六點以後打卡。
網站截圖
程序啟動界面,需要輸入域賬號和密碼,點擊開始
登陸以後的界面
點擊【開始】按鈕
然後程序就開啟了,把他放到服務器上,大功告成。
下載