找回密码
 立即注册
搜索
查看: 5442|回复: 27

[软件] 按键精灵类软件有没有替代品或者更好的选择?

[复制链接]
     
发表于 2018-11-2 10:16 | 显示全部楼层 |阅读模式
最近工作上来了很多机械性重复劳动,搞了几行就开始思考能不能自动化一下

以前用过按键精灵,做过相关脚本,但都是通过坐标来执行的,容错低,无人值守不可能放心

按键精灵本身有识图甚至识别窗口、函数等功能,但是粗用了一下不是说非常智能方便,比如读取已打开excel的功能,就没有实现成功

但是按键精灵本身功能粗看一下还真的挺强大的,里面打开软件、处理数据库等功能如果好好研究一下,应该能给工作带来很大便利
回复

使用道具 举报

头像被屏蔽
     
发表于 2018-11-2 10:29 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2018-11-2 10:34 来自手机 | 显示全部楼层
excel用vba呀
回复

使用道具 举报

     
 楼主| 发表于 2018-11-2 11:12 | 显示全部楼层

除了excel,还需要操作另一个软件系统
回复

使用道具 举报

发表于 2018-11-2 11:58 来自手机 | 显示全部楼层
没用过按键精灵,不过你说的功能autohotkey都有。
回复

使用道具 举报

     
发表于 2018-11-2 13:40 | 显示全部楼层
本帖最后由 dodolee 于 2018-11-2 13:43 编辑

Mac 的话有 AppleScripts,Windows 似乎只能 AutoIt 或者 AutoHotKey
回复

使用道具 举报

     
发表于 2018-11-2 13:44 | 显示全部楼层
我给公司内网软件操作也是弄按键精灵。
这些软件开发的都很烂,很多人性化功能没有,的一个一个点确认...
业务多了几百个要点,工作人员要罢工...
也在找有没有简单点的,按键精灵广告太多了,老机器跑这些还卡的不行...
回复

使用道具 举报

     
发表于 2018-11-2 13:59 来自手机 | 显示全部楼层
aotohotkey有什么问题么……我觉得很好用啊。

尤其上面说老机器的,ahk可以发送一个单独的exe文件,不需要安装其他的东西。
回复

使用道具 举报

     
 楼主| 发表于 2018-11-2 14:09 | 显示全部楼层
按键精灵这么长时间的生态系统的确是一笔很大的资源啊,了解到一个衍生的{懒人系列}插件, 研究一下
回复

使用道具 举报

     
发表于 2018-11-2 14:31 来自手机 | 显示全部楼层
写过两年按键,个人感觉随便用用还行,想要更好的体验,就只能用编程语言替代了,其他工具都没按键简单粗暴

—— 来自 360 1809-A01, Android 8.1.0上的 S1Next-鹅版 v2.0.4
回复

使用道具 举报

     
发表于 2018-11-2 14:44 | 显示全部楼层
大漠  
付费的 不过好像是有破解版

  -- 来自 能看大图的 Stage1官方 iOS客户端
回复

使用道具 举报

     
 楼主| 发表于 2018-11-2 14:57 | 显示全部楼层
longxiao7 发表于 2018-11-2 14:31
写过两年按键,个人感觉随便用用还行,想要更好的体验,就只能用编程语言替代了,其他工具都没按键简单粗暴 ...

用于这种操作的编程语言是指哪一类的?有木有关键字了解一下
回复

使用道具 举报

     
 楼主| 发表于 2018-11-2 22:03 | 显示全部楼层
LZ可以说找到梦寐以求的软件了,autoit3

稍微试了几个demo感觉符合之前自己的要求,通过相关接口加上键盘和相对坐标模拟,还能取得剪贴板内容并且对内容加以判断,可以说十分灵活可行了

然后就是请问诸位坛友有木有比较系统的入门教程,或者有木有大佬愿意献身指点迷津本人愿意有偿学习~
回复

使用道具 举报

     
发表于 2018-11-2 22:16 来自手机 | 显示全部楼层
spikedingo 发表于 2018-11-2 22:03
LZ可以说找到梦寐以求的软件了,autoit3

稍微试了几个demo感觉符合之前自己的要求,通过相关接口加上键盘 ...

aotoit3有两个论坛,在知乎可以搜到。
好像这个的教程不如autohotkey多。

—— 来自 HUAWEI KNT-AL10, Android 8.0.0上的 S1Next-鹅版 v2.0.4
回复

使用道具 举报

     
 楼主| 发表于 2018-11-2 23:39 | 显示全部楼层
佳丽三千到 发表于 2018-11-2 22:16
aotoit3有两个论坛,在知乎可以搜到。
好像这个的教程不如autohotkey多。

不过也许这两软件功能有些重合也有可能
回复

使用道具 举报

     
发表于 2018-11-3 00:28 来自手机 | 显示全部楼层
spikedingo 发表于 2018-11-2 23:39
不过也许这两软件功能有些重合也有可能

不是有可能,确实是很多重合的地方。

—— 来自 HUAWEI KNT-AL10, Android 8.0.0上的 S1Next-鹅版 v2.0.4
回复

使用道具 举报

     
发表于 2018-11-3 01:00 | 显示全部楼层
看到这帖子第一反应是pywin32,只要有开发能力&不介意重新造轮子的话
回复

使用道具 举报

     
发表于 2018-11-3 08:56 来自手机 | 显示全部楼层
spikedingo 发表于 2018-11-2 22:03
LZ可以说找到梦寐以求的软件了,autoit3

稍微试了几个demo感觉符合之前自己的要求,通过相关接口加上键盘 ...

au的中文说明和那本论坛智慧合集已经很棒棒了啊,还要什么自行车
回复

使用道具 举报

     
 楼主| 发表于 2018-11-6 08:30 | 显示全部楼层
本帖最后由 spikedingo 于 2018-11-6 08:37 编辑

#RequireAdmin
#Region ;**** 参数创建于 ACNWrapper_GUI ****
#PRE_icon=C:\WINDOWS\System32\SHELL32.dll|-145
#PRE_UseX64=n
#PRE_Res_requestedExecutionLevel=None
#EndRegion ;**** 参数创建于 ACNWrapper_GUI ****
#include <Excel.au3>
#include <Constants.au3>

Opt('MouseCoordMode', 2)
AutoItSetOption("SendKeyDelay", 100)
; 链接到已打开的excel工作表
Local $excel = _ExcelBookAttach("444.xlsx" ,"FileName")

; 弹框请求起始循环的行数
$i = InputBox("准备", "请输入起始行数")
; Dim $i = 102

; While语句,当病历号栏有值时,就继续操作,否则退出循环
While _ExcelReadCell($excel,"b"&$i) <> ""
        ; If语句,读取到完成状态栏(E)数值非1时,继续操作,1代表已完成,可以跳过
        if  _ExcelReadCell($excel,"e"&$i) <> 1 Then
                ; 读取病历号
                Local $pNum = _ExcelReadCell($excel,"b"&$i)
                ; 保存病人姓名以做容错判断
                Local $pName = _ExcelReadCell($excel,"c"&$i)
                ; 保存病人应该充值的金额
                Local $pMoney = _ExcelReadCell($excel,"a"&$i)
                ; 将病历号存入剪切板

        ; 开始卫宁软件部分操作
                ; 获取充值卡操作窗口并等待激活至活动窗口
                Local $handle = WinGetHandle("[CLASS:TFormMain]")
                WinActivate($handle)
                WinWaitActive($handle)

                ; 首先确定切换到充值用户列表
                Sleep(100)
                MouseClick("left", 76, 12, 2, 5)
                ; 聚焦病历号窗口

                ; 判断病历号输入框内病历号是否正确,否则一直执行输入程序
                ControlFocus($handle,"","TEdit1")
                While ControlGetText($handle,"","TEdit1") <> $pNum
                        AutoItSetOption("SendKeyDelay", 100)
                        MouseClick("left", 76, 12, 2, 5)
                        ControlFocus($handle,"","TEdit1")
                        ; 确保内容已清空
                        ;
                        ; 粘贴病历号
                        Send($pNum)
                        ; 按回车确定
                        Local $text = ControlGetText($handle,"","TEdit1")
                WEnd
                Send("{ENTER}")


                ; 点击保存
                ControlClick($handle, "", "TBitBtn10")
                ; 等待
                Sleep(200)
                ; 获取弹出的提示窗口,等待其活动后点击确定按钮
                Local $Notice = WinWaitActive("[CLASS:#32770]")
                ControlClick($Notice, "", "Button1")
                Sleep(200)
                ; 获取卡号供后面粘贴用
                Local $CardNum = ControlGetText($handle,"","TEdit9")

                ;  双击病人信息,至充值界面
                WinActivate($handle)       
                WinWaitActive($handle)
                MouseClick("left", 179, 57, 2, 5)
                ; 获取充值金额窗口
                Sleep(200)
                ; 在充值前检查是否正确
                Local $info = WinGetText($handle)
                Local $correct = StringInStr($info,$pName)

                if $correct <> 0 Then
                        ; 让金额输入窗口聚焦
                        ControlFocus($handle,"","TEdit6")
                        ; 输入充值金额
                        Send($pMoney)
                        Sleep(200)
                        ; 点击六次回车,完成充值
                        Send("{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}{ENTER}")
                ;  end winning

                        Sleep(200)
                        ; 充值后,保存之前留存的卡号,并在E栏打上1
                        _ExcelWriteCell($excel, $CardNum, "d"&$i)
                        _ExcelWriteCell($excel, 1, "e"&$i)
                Endif
        Else
                _ExcelWriteCell($excel, "Done!", "f"&$i)
        Endif

        $i += 1
WEnd

后续:LZ成功了,解决了整个科室分摊的1W条信息录入问题尝到了甜头

评分

参与人数 1战斗力 +1 收起 理由
史莱姆KING + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2018-11-6 08:31 | 显示全部楼层
本帖最后由 spikedingo 于 2018-11-6 08:44 编辑

踩了几个坑,1.office安装不完善可能导致无法读取excel内容,后重装office后解决
2.部分需要管理员权限的软件,普通模式无法自动化操作,必须在au3脚本里加上#RequireAdmin,取得管理员权限才可控制对应软件
3.当你的au3脚本取得管理员权限后,就无法再读取普通权限打开的excel文件,这时要把excel文件也使用管理员权限打开

之后就一路绿灯,几乎没啥调试搞出了成品
回复

使用道具 举报

     
发表于 2018-11-6 11:47 | 显示全部楼层
spikedingo 发表于 2018-11-2 22:03
LZ可以说找到梦寐以求的软件了,autoit3

稍微试了几个demo感觉符合之前自己的要求,通过相关接口加上键盘 ...

这个软件确实还算好用

不过对于非标准win控件貌似不太给力

我这也是初学者,弄个简单的软件自动安装停止服务复制破解开启服务发送快捷方式,这些还凑合


高级功能暂时不会,毕竟不是专业码农- -
回复

使用道具 举报

     
 楼主| 发表于 2018-11-6 13:41 来自手机 | 显示全部楼层
史莱姆KING 发表于 2018-11-6 11:47
这个软件确实还算好用

不过对于非标准win控件貌似不太给力

非标准控件用相对位置的点击,还算准确,但是可能就不方便去获取一些具体状态,进而保证整个过程的精确性了
回复

使用道具 举报

     
发表于 2018-11-6 14:12 来自手机 | 显示全部楼层
会python的话强推sikuli,之前用它写过手游刷刷刷脚本

—— 来自 SAMSUNG GT-N7100, Android 4.0.4上的 S1Next-鹅版 v2.0.4
回复

使用道具 举报

     
发表于 2018-11-6 14:15 | 显示全部楼层
spikedingo 发表于 2018-11-6 13:41
非标准控件用相对位置的点击,还算准确,但是可能就不方便去获取一些具体状态,进而保证整个过程的精确性 ...

这个我测试过,也不太行

主要是一部分机器的配置,分辨率不同,未必都管用

嘛,这个我有空慢慢研究吧,非码农表示难度较高233333
回复

使用道具 举报

     
 楼主| 发表于 2018-11-6 15:10 | 显示全部楼层
weakiwi 发表于 2018-11-6 14:12
会python的话强推sikuli,之前用它写过手游刷刷刷脚本

—— 来自 SAMSUNG GT-N7100, Android 4.0.4上的 S1 ...

看了一眼,喷了,不追求速度可能准确性和易用性很棒?没用过瞎猜的
回复

使用道具 举报

     
 楼主| 发表于 2018-11-6 15:12 | 显示全部楼层
史莱姆KING 发表于 2018-11-6 14:15
这个我测试过,也不太行

主要是一部分机器的配置,分辨率不同,未必都管用

可能不同软件不一样,我上面那个案例在不同分辨率下面效果是一样的
回复

使用道具 举报

     
发表于 2018-11-7 09:48 来自手机 | 显示全部楼层
spikedingo 发表于 2018-11-6 15:10
看了一眼,喷了,不追求速度可能准确性和易用性很棒?没用过瞎猜的 ...

的确是这样的。
我就是靠图像硬撸,但是如果突然弹个窗把软件挡住了啥的就有些蛋疼。。。
主要是逻辑直接就和人操作的差不多,先用眼睛看,点看到的地方。出现什么图像就停止。。。

—— 来自 SAMSUNG GT-N7100, Android 4.0.4上的 S1Next-鹅版 v2.0.4
回复

使用道具 举报

发表于 2018-11-7 10:05 | 显示全部楼层
script字里行间满是识别图像,笑抽了
不知道能不能在指定窗口里识别,说起来不是前台的窗口被遮住的部分还会被渲染吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-17 06:55 , Processed in 0.041464 second(s), 6 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表