每日自動簽到簽退的程序

公司裏有一個網頁版的考勤系統。每天打開電腦,用域賬戶登錄,然後打開IE,輸入網址,系統會自動感知你的域賬戶,顯示個人信息,在8點半之前點擊簽到就不算遲到。

像下面的圖這樣


終於有一天由於地鐵故障遲到了,於是想搞一個自動簽到

考察了一下網站簽到系統,可以看到這個系統大概是ASP.NET,能感知域賬戶說明有控件,而這個按鈕鏈接是一個javascript函數

類似

<a id="ctl00_m_g_23105813_1daf_4c2a_b652_8ff42b3594ef_ctl00_btnCheckIn
" hideFocus="" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$m$g_23105813_1daf_4c2a_b652_8ff42b3594ef$ctl00$btnCheckIn", "", true, "", "", false, true))" jQuery15203230967361562585="58"/>

所以最好用IE內核的webbrower控件來做。
打開VS,新建C# winform工程
拖一個Webbrowser控件上去
在Form的Load事件裏訪問網址
   webBrowser1.Navigate("aaa.bbb.com");


在DocumentCompleted事件裏
HtmlDocument webDoc = webBrowser1.Document;
HtmlElement checkinEle = webDoc.GetElementById("ctl00_m_g_23105813_1daf_4c2a_b652_8ff42b3594ef_ctl00_btnCheckIn");
if(checkinEle!=null)
{
     webDoc.GetElementById("ctl00_m_g_23105813_1daf_4c2a_b652_8ff42b3594ef_ctl00_btnCheckIn").InvokeMember("click"); 
}


這樣就可以自動點擊,接下來是部署的問題
1,自動開機。聯想臺式機支持定時開機,進BIOS,設置每週一到五,早上8點定時開機



2,自動登錄。打開註冊表HKEY_LOCAL_MACHINE\SOFtware\Microsoft\Windows Nt\CurrentVersion\Winlogon,在右邊找到AutoAdminilogon,將鍵值設爲1,把DefaultUserName的值設置爲需要自動登錄的用戶名,再新建一個字符串值DefaultPassword,設爲密碼,如果是域賬戶,再新建一個字符串值DefaultDomain,設爲域的名字
3,自動啓動簽到程序。進入計劃任務,根據嚮導創建一個計劃,指向創建的程序
簽退程序也是類似的
不過簽退的時候會彈出一個對話框


它的鏈接裏有一個onclick屬性

<a id="ctl00_m_g_23105813_1daf_4c2a_b652_8ff42b3594ef_ctl00_btnCheckOut" hideFocus="" οnclick="return confirm('您確定要簽退嗎?');" href="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$m$g_23105813_1daf_4c2a_b652_8ff42b3594ef$ctl00$btnCheckOut", "", true, "", "", false, true))" jQuery15203230967361562585="58"/>

在代碼裏可以自動確認
 HtmlDocument webDoc = webBrowser1.Document;
 IHTMLDocument2 vDocument = (IHTMLDocument2)webBrowser1.Document.DomDocument; vDocument.parentWindow.execScript("function confirm(str){return true;} ", "javascript"); //彈出確認
 webDoc.GetElementById("ctl00_m_g_23105813_1daf_4c2a_b652_8ff42b3594ef_ctl00_btnCheckOut").InvokeMember("click");



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章