当前位置:首页>弱电技术>门禁对讲>科密A1考勤数据自动同步

科密A1考勤数据自动同步

先吐槽下科密A1考勤,软件其实是自带有自动同步的功能的,但是设置后软件在同步的时间点后竟然直接弹出错误框,寻求科密技术支持,人家直接回复A1考勤只能手动同步,不能自动同步。(人家自动同步的版本是需要另外收费的)

接下来是重点,既然寻求技术支持无果,那么就只能自己动手解决了,下面是用AutoIt写的自动同步脚本,放在服务器上,然后根据你的需要设置windows的任务计划即可按照你需要的时间进行自动同步了。

同步考勤记录的AutoIt代码:

#include <File.au3>
Local Const $LogFile = @ScriptDir & “\” & @YEAR & @MON & “.log
Local Const $IniFile = @ScriptDir & “\app.ini
Local Const $CM_CLIENT = IniRead($IniFile, “General“, “CM_CLIENT“, ““)
_FileWriteLog($LogFile, “======考勤记录同步开始执行======” )
MainFunc()
_FileWriteLog($LogFile, “======考勤记录同步执行结束======“)
Func MainFunc()
;获取窗口
Local $hWndMain = WinGetHandle(“[CLASS:CM_CLIENT; TITLE:终端管理]“,”“)
If @error Then
$hWndMain = 0
if $CM_CLIENT <> “” Then
Run($CM_CLIENT)
$hWndMain = WinWait(“[CLASS:CM_CLIENT; TITLE:终端管理]“, ““, 15)
EndIf
EndIf
If ($hWndMain == 0) Then
_FileWriteLog($LogFile, “获取 CM_CLIENT 窗口失败!” )
Return
EndIf
WinActivate($hWndMain)
WinWaitActive($hWndMain)
; 切换到 同步 页面
Local $hWnd = ControlGetHandle($hWndMain, “[CLASS:TRzBmpButton]“,”数据采集“)
If @error Then
_FileWriteLog($LogFile, “获取 数据采集 按钮失败!” )
return
EndIf
ControlClick($hWndMain,”“,$hWnd )
Sleep(1000)
; 同步
Local $hWnd = ControlGetHandle($hWndMain, “[CLASS:TBitBtn]“,”采集(&O)“)
If @error Then
_FileWriteLog($LogFile, “获取 采集 按钮失败!” )
return
EndIf
ControlClick($hWndMain,”“,$hWnd )
; 关闭弹出对话框
Local $hWndDiag = WinWait(“[CLASS:#32770; TITLE:终端管理]”, “”, 900)
If ($hWndDiag <> 0) Then
WinActivate($hWndDiag)
WinWaitActive($hWndDiag)
Local $text = ControlGetText($hWndDiag, “”, “Static2”)
_FileWriteLog($LogFile, $text & ” “ )
WinClose($hWndDiag)
WinWaitClose($hWndDiag)
EndIf
; 关闭主窗口
WinClose($hWndMain)
EndFunc

同步时间的AutoIt代码:

#include <File.au3>
Local Const $LogFile = @ScriptDir & “\” & @YEAR & @MON & “.log
Local Const $IniFile = @ScriptDir & “\app.ini
Local Const $CM_CLIENT = IniRead($IniFile, “General“, “CM_CLIENT“, ““)
_FileWriteLog($LogFile, “======时间同步开始执行======” )
MainFunc()
_FileWriteLog($LogFile, “======时间同步执行结束======“)
Func MainFunc()
;获取窗口
Local $hWndMain = WinGetHandle(“[CLASS:CM_CLIENT; TITLE:终端管理]“,”“)
If @error Then
$hWndMain = 0
if $CM_CLIENT <> “” Then
Run($CM_CLIENT)
$hWndMain = WinWait(“[CLASS:CM_CLIENT; TITLE:终端管理]“, ““, 15)
EndIf
EndIf
If ($hWndMain == 0) Then
_FileWriteLog($LogFile, “获取 CM_CLIENT 窗口失败!” )
Return
EndIf
WinActivate($hWndMain)
; 切换到 设备设置 页面
Local $hWnd = ControlGetHandle($hWndMain, “[CLASS:TRzBmpButton]“,”设备设置“)
If @error Then
_FileWriteLog($LogFile, “获取 设备设置 按钮失败!” )
return
EndIf
ControlClick($hWndMain,”“,$hWnd )
Sleep(1000)
;打开设备属性设置窗口
Local $hWnd = ControlGetHandle($hWndMain, “[CLASS:TButton]“,”属性设置(&A)“)
If @error Then
_FileWriteLog($LogFile, “获取 属性设置 按钮失败!” )
return
EndIf
ControlClick($hWndMain,”“,$hWnd )
;激活设备属性设置窗口
Local $hWndSub = WinWait(“[CLASS:TEquPropertySetFForm; TITLE:设备属性设置]“, ““, 5)
WinActivate($hWndSub)
; 取消获取设置状态
$hWnd = ControlGetHandle($hWndSub, “[CLASS:TCheckBox]“,”获取设备状态“)
ControlClick($hWndSub,”“,$hWnd )
;单击确认按钮
$hWnd = ControlGetHandle($hWndSub, “[CLASS:TBitBtn]“,”确定(&O)“)
ControlClick($hWndSub,”“,$hWnd )
Local $hWndDiag = WinWait(“[CLASS:#32770; TITLE:终端管理]”, “”, 300)
If ($hWndDiag <> 0) Then
WinActivate($hWndDiag)
WinWaitActive($hWndDiag)
Local $text = ControlGetText($hWndSub, “”, “TMemoExt1”)
$text = StringReplace($text ,@CRLF,” | “)
$text = StringReplace($text ,“| |”,“|”)
_FileWriteLog($LogFile, $text & ” “)
Local $text = ControlGetText($hWndDiag, “”, “Static2”)
$text = StringReplace($text ,@CR,” | “)
_FileWriteLog($LogFile, $text & ” “)
WinClose($hWndDiag)
WinWaitClose($hWndDiag)
EndIf
; 关闭设备属性窗口
WinClose($hWndSub)
WinWaitClose($hWndSub)
; 关闭主窗口
WinClose($hWndMain)
EndFunc

本文由 @弱电民工 发布于弱电智能网 。

题图来自Unsplash,基于CC0协议

内容观点仅代表作者本人,弱电智能网平台仅提供信息存储空间服务。

如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

添加微信ydian188免费入群,记得备注“弱电智能网”。

给TA打赏
共{{data.count}}人
人已打赏
门禁对讲

海康门禁主机发了卡无法开门,我告诉你iVMS-4200客户端上怎么处理

2022-6-26 23:18:32

门禁对讲

大华门禁无法开门怎么办?

2022-7-6 0:37:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
搜索