每日自动签到签退的程序

公司里有一个网页版的考勤系统。每天打开电脑,用域账户登录,然后打开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");



  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 下面是一个简单的 C 代码示例,实现自动签到功能: ```c #include <stdio.h> #include <curl/curl.h> int main(void) { CURL *curl; CURLcode res; curl = curl_easy_init(); if(curl) { curl_easy_setopt(curl, CURLOPT_URL, "https://www.example.com/signin"); /* 设置 POST 请求 */ curl_easy_setopt(curl, CURLOPT_POST, 1L); /* 设置签到所需的参数 */ curl_easy_setopt(curl, CURLOPT_POSTFIELDS, "username=myusername&password=mypassword"); /* 发送请求 */ res = curl_easy_perform(curl); /* 检查请求是否成功 */ if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); /* 释放资源 */ curl_easy_cleanup(curl); } return 0; } ``` 请注意,这只是一个简单的示例,实际上还需要进行更多的处理,例如处理错误和重定向。需要根据实际需求来完善这个程序。 ### 回答2: 自动签到程序是一种可以替代人工签到程序,通过编写C代码实现自动签到功能如下: 首先,需要了解签到的具体要求和流程,包括签到网站的URL、表单数据、请求方法等。 然后,通过C的网络编程库,使用HTTP请求发送签到请求。可以使用libcurl等第三方库实现HTTP请求功能。 接下来,编写C代码连接到指定的签到网站,并发送HTTP请求,携带必要的表单数据。 在收到服务器的响应后,检查响应的状态码和内容,判断签到是否成功。可以根据服务器返回的数据来判断签到成功或失败,并做相应的处理。 为了实现自动签到,可以使用定时器功能,每天设定一个指定的时间执行签到程序。在C中可以使用系统相关的函数,如sleep()或者定时器库函数设置定时器,当达到设定时间时,自动触发签到程序。 最后,将编写的C代码编译并生成可执行文件,即可运行自动签到程序。 编写自动签到程序需要具备一定的C语言基础和网络编程知识,并了解签到网站的相关接口。同时,需要注意程序的稳定性和异常处理,避免签到过程中出现异常导致程序终止。 总之,以上是一个简单的C代码实现自动签到程序的步骤,具体实现可能因签到网站的不同而有所差异。 ### 回答3: 使用C语言编写一个自动签到程序可以实现以下步骤: 1. 引入所需的头文件,例如stdio.h和stdlib.h,以及一些其他可能需要的头文件,如time.h和string.h等。 2. 定义必要的全局变量,如用户名、密码、签到网址等。 3. 编写一个函数来模拟用户登录,可以使用CURL库来发送POST请求,将用户名和密码发送到登录页面,以实现自动登录。 4. 编写一个函数来解析返回的HTML页面,查找签到按钮或签到表单。 5. 编写一个函数来模拟点击签到按钮或提交签到表单,可以使用CURL库再次发送POST请求,将签到所需的参数发送到签到页面,以实现自动签到。 6. 在主函数中调用上述函数,依次执行登录和签到操作。 7. 可以使用定时器函数,如sleep函数,来实现定时自动签到。 8. 最后,编译并运行程序,即可实现自动签到功能。 需要注意的是,实现自动签到程序可能需要了解一些网络编程相关的知识,如HTTP协议和CURL库的使用等。此外,不同的签到网站可能有不同的签到方式和参数,需要根据具体情况进行相应的调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

嘉诩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值