nimlang实现根据屏幕坐标自动输入内容以实现自动打卡的例子

本文介绍了使用nimlang编写的一个自动打卡程序,通过屏幕坐标定位、剪贴板操作实现固定内容输入。程序利用winim包简化了win32 API的使用,能自动切换页面并提交内容,避免手动操作。目前限制于Windows平台,未来计划探索Linux支持。

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

nimlang实现根据屏幕坐标自动输入内容以实现自动打卡的例子
背景:工作中需要定时向网页输入一些固定不变的内容,常常需要手动切换不同的网页,还要寻找输入框,输入完毕后,点击提交按钮等。有时输入完毕后,直接输入回车键可以直接提交。因此产生了写一个小例子自动实现上述任务。以达到自动打卡的目的,避免因为忙其他事务延缓打卡时间。

前提

  • 输入内容固定,而且字数有一定限制,不需要同时输入字符和图片的.
  • 图片内容和字符单独提交.
  • 本例利用剪贴板,消除了因为中文编码问题而出现乱码的情况.
  • 由于网页可以利用组合键进行切换,以避免手动鼠标切换网页.
  • 利用计时器,避免设置系统任务.
  • 本例实现了控制台程序实现上述任务,避免了复杂的界面情况.
  • 剪贴板字符限制,需要寻求更完善的方法,突破输入的字符限制.
  • nimlang winim包可以实现win32程序,比自带库函数丰富,实现起来更加舒适,而且编译一次即可.
  • 程序总体大小相比pywin32实现同样目的程序小而且更加流畅最简化的只有几K大小.

实现步骤
1.利用浏览器组合键切换到目的页,根据坐标,移动鼠标到输入框,以获取窗口句柄.
2.向剪贴板设置输入的内容,最好是固定的重复内容.
3.鼠标点击输入框,获得输入Focus.
4.粘贴内容至输入框.
5.点击提交按钮或者按下回车键提交输入内容.
之前困扰的几点

  • 获取窗口句柄的函数选用的WindowFromPoint()
  • SendMessage()不出效果只好选用的Ctrl+V组合键.
  • 我选用的是这个GetClipboardData(CF_UNICODETEXT).因为官网提供的CF_TEXT显示乱码.
  • 参考的文献baidu和bing上的不多,自已按官网文档写的,win32程序真好用.
  • 不能在Linux下使用,但可以用python重写一个在Linux下使用,Linux下浏览器的组合键是Alt+数字.
  • emacs比vscode提示详细,全面,建议使用.
  • 写成多线程的才能定时切换顺畅,正在尝试不使用多线程.
    **这是设置剪贴板的关键部分,终于不是乱码了
proc getContentFromClipboared(hData, phw:HWND) = 
 #[get content from clipboard]#
 OpenClipboard(phw)
 EmptyClipboard()
 
 SetClipboardData(CF_UNICODETEXT, hData)
 GetClipboardData(CF_UNICODETEXT)
 CloseClipboard()
 SendMessage(phw, WM_PASTE, 0, 0)
 sleep(1000)
 # Ctrl+V
 keybd_event(0x11, 0,0,0)
 keybd_event(0x56, 0,0,0)
 keybd_event(0x56, 0, KEYEVENTF_KEYUP,0)
 keybd_event(0x11, 0, KEYEVENTF_KEYUP,0)
  • 这是运行时的截图,实现两个任务定时切换页面的.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值