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();
}
設置每天的八點半以後上班打卡以及六點以後打卡。
網站截圖
程序啟動界面,需要輸入域賬號和密碼,點擊開始

登陸以後的界面

點擊【開始】按鈕
然後程序就開啟了,把他放到服務器上,大功告成。
下載