Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >按键精灵——如何实现办公自由(四)

按键精灵——如何实现办公自由(四)

作者头像
Ed_Frey
发布于 2020-04-30 09:39:08
发布于 2020-04-30 09:39:08
2K00
代码可运行
举报
文章被收录于专栏:奔跑的键盘侠奔跑的键盘侠
运行总次数:0
代码可运行

前面写的几篇,不知道大家是否能看出个所以然,主要是框架的内容,没有特别繁琐复杂的代码。

到任务加工处理这块其实也不会特别复杂,重点依旧是逻辑结构,比如读取内容是否足够精确、新任务还是旧任务怎么归类归档、任务队列如何设计(处理到一半故障了怎么解决?)、故障时检测报警,慢慢的,你会发现刚从一个坑出来又进了另外一个坑。

不过,也正是因为这无数的坑坑洼洼,我们才有了一路探索未知世界的动力。总之,既来之则安之,别怂就对了!

关于任务处理的细节方面,主要思路分析为主,代码参考意义不大,毕竟每个人要处理的任务千变万化。某些常见通用的功能往期也有分享过代码,到时候主要贴个传送门方便大家翻阅。

如果大家平时有做一定积累,这个时候可能就比如容易下手了,任务处理,无非是把各个小功能拼接起来,唯一复杂点的就是逻辑结构排列,so,这个系列的重点依旧是逻辑结构设计,理一下大家的思路就会愈发的清晰了。

1

任务获取与识别

初始化,找到工作台,然后检测新的任务。

可以用runapp命令打开应用窗口,再通过句柄信息锁定窗口(当然通过窗口区域的找色命令也很好用),然后提取窗口内刷新出来的数据,通过OCR或者简单的选择复制获取新任务相关的文本信息。

贴一段OCR的代码供大家作参考:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
title = "XXX企业微信群聊"
class_name = "WwStandaloneConversationWnd"
Hwnd = Plugin.Window.Find(class_name,title)
If Hwnd=0 Then 
    MessageBox "未检测到"&title&"窗口,请检查对话框是否有打开"
Else 
    Call Plugin.Window.Restore(Hwnd)
    Delay 200
    Call Plugin.Window.SetClientSize(Hwnd, 500, 600)
    Delay 300
    sText = Plugin.Window.GetClientRect(Hwnd)
    dim Myarray   
    Myarray = Split(sText, "|")   
    x0 = Clng(Myarray(0)): y0 = Clng(Myarray(1))   
    x1 = Clng(Myarray(0)): y1 = Clng(Myarray(1))  
End If
//(x0,y0,x1,y1)为对话框的左上角坐标、右下角坐标
set dm = createobject("dm.dmsoft")
base_path = dm.GetBasePath()
dm_ret = dm.SetPath(base_path)
dm_ret = dm.SetDict(0,"D:\大漠插件3.1233\XXX字库.txt")
扫描区 = dm.Ocr(x0,y0,x1,y1,"cce4fc-000000",1.0)

稍微补充一下,通过对话框的类名和标题名来绑定句柄,然后锁定窗口获取对话消息。关于对话内容的获取,最简单无脑的就是右键点击复制;如果要智能一点的话,可以使用OCR直接去识别文字。

而OCR的使用涉及到了一款神器:大漠插件,往期有介绍过如何使用大漠插件,留一下传送门链接《按键精灵二三事系列第九篇——图文识别+发邮件》

最后的获取到扫描区的文字之后,再进行字符串解析处理。一般需要提取订单时间或者对话时间之类的,于是通过窗口标题名称+时间,基本就可以给这个任务打上标签了:新任务or旧任务。

旧任务,pass当前循环;新任务,加入处理队列。

2

任务加入队列

至于为何要用队列,可能有些人会有点摸不着头脑,如果自动办公内容单一,可以电脑专门自动办公而不会人工操作,完全可以砍掉这个部分。

但是很多场景,你用一台设备自动办公的同时,也需要做其他的工作,极有可能你有更重要的事情,虽然接到几个新订单、但不能马上处理,于是我们需要一个队列、等空闲时直接处理队列中的新订单。

处理上面这种情形,还有另外一种情形:你有两台电脑,一台自动、一台手动,手动这台设备的任务,你可以传递给自动的设备去处理。甚至,可以多台设备发送处理任务到这台自动的设备,就好比医院验血窗口,护士抽血完把标本递交给相应的化验科室,对验血护士来讲就完成了任务。

而化验科室就相当于我们的自动办公主机,要按何种优先顺序去处理收集到的N个标本,就看规则如何了。而对我们来讲,我们也可以做不同的优先级别来对待。

通常来讲,根据订单类型或者是否VIP再结合时间排列,或者只用时间先后来指定优先规则,完全看个人心情喽!

代码过于简单就略了,提供一个最简单的思路:往队列文件夹中写入一个文档,文档名字作为标识;队列文件夹中每多一个文档就代表多了一个任务,仅此而已。

3

任务处理

任务处理反而是最简单的,当然需要你有明确的处理规则。

不怕if分支过多,select case还是蛮好用的。另外,上节内容我们把字典都搬出来了,你觉得还会有按键精灵搞不了的吗?

参考前面的往队列文件夹中写入一个文档的思路,任务处理完,自然要把文档要删除,不可能一直放在队列里。当然,我不建议直接删除,可以使用move,把文档移动到其他文件夹,既可以解决队列消除,也可以存档备份历史任务。

4

日志存档及警报

除了前面说的历史任务备份,还有一个问题要注意,有时候我们并不是特别放心自己代码,特别是刚写好试运行的时候,于是记录下自动办公的操作记录,成了不二之选,当然也可以用于代码完善改进,抑或是过一段时间要统计下自动办公完成了多少任务、寻求下成就感,甚至如果发生什么不好的事情要撤销之前的处理过的任务。这个时候,日志Log就该出场了!

Log文件无非就是记录下XX时间点执行了XX任务(或者调用了什么方法处理了那个订单,涉及到的各种变量等等),说白了,就是写文本而已。

关于警报,再完美的编程也会有报错的时候,毕竟功夫再高,也怕羊刀,谁知道会不会遇到魔法免疫的怪异任务。没关系!我们If分支加一个报警提醒,邮件、qq甚至微信通知任你选,转人工服务!

来一段经典的发送qq消息代码吧,之前也有发过。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Call send_qq_msg(123456789,"hello")

Function sendqqmsg(qqnumber,content)
    Call RunApp("tencent://Message/?menu=yes&exe=&uin=" &qqnumber)
    Hwnd = Plugin.Window.Foreground() '获取qq对画框窗口句柄
    Call Plugin.Window.Active(Hwnd) '激活qq对话框
    Delay 900
    SayString content '输入文本内容
    KeyPress "Enter", 1 '模拟键盘回车键发送
    Delay 200
    KeyPress "Esc", 1 '关闭qq窗口
End Function

5

总结

关于按键精灵实现办公自由,这个的确是可行的,写到这里,我自己的感觉是意犹未尽,但是又不想耗费太多精力在这个时间点上。

再来理一下思路:

通过自己的办公逻辑设置一个定时器(循环方式),然后把要读写处理的任务塞进循环中,至于如何读写、如何完成任务,就因人而异了;而日志、预警提醒就是锦上添花的部分了。

其实每个部分都涉及到不同的知识点,比较散乱,但真正难的几乎没有,需要大家大胆的去尝试和不断的积累经验。

一千个读者眼中有一千个哈姆雷特,同样,一千个代码作者能写出一千种不同的编码。无论如何,还是要结合各自的工作内容场景,设计出自己的逻辑流程图,然后在动手去逐个部分的coding,定能事半功倍!

-END-

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-04-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 奔跑的键盘侠 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
按键精灵——qq发图片
按照正常的节奏,一般周末才有点时间发个帖子,即使兴起,来一篇纯干货吧,话说N年前qq自动群发图文消息软件,都可以拿去卖钱的。
Ed_Frey
2019/09/09
4.6K0
按键精灵——qq发图片
按键精灵-常用脚本命令汇集
//~~~~~~~~~~{[做后台的准备]}~~~~~~~~~~~ //下面,用标题名来找父窗口 Hwnd = Plugin.Window.Find(0, "无标题 - 记事本") //下面,根据父窗口来找子窗口(找对了标题名才有效) HwndEx = Plugin.Window.FindEx(Hwnd, 0, 0, 0) //下面,用程序名来找父窗口 Hwnd = Plugin.Window.Find("Notepad", 0) //下面,根据父窗口来找子窗口(找对了类名才有效) Hwnd = Plugi
阿炬
2018/05/11
2.5K0
按键精灵——如何实现办公自由(三)
上一期主要讲了定时器的循环逻辑,还有配置表的使用,还是来段代码供大家参详一下吧,干唠不给代码貌似是在耍流氓
Ed_Frey
2020/04/27
1.6K0
按键精灵——如何实现办公自由(三)
按键精灵——如何实现excel办公自由
去年有写过一篇按键精灵关于excel操作的帖子,很多小伙伴觉得不过瘾,而且按键自带的office插件命令少的可怜。
Ed_Frey
2020/03/31
6.9K0
按键精灵——如何实现excel办公自由
按键精灵——自动关闭广告弹窗
其实学习按键精灵最最关键的,就是学以致用,投入到生产实践中,提高工作效率。这也是为什么很多人热衷于它的重要原因。
Ed_Frey
2019/09/10
10.4K0
按键精灵——自动关闭广告弹窗
按键精灵q语言基础教学怎么看不了_按键精灵脚本是用什么语言写
一、数据类型 1.1数据类型 可以表示一切的类型variant 逻辑类型:boolean (true,false) 数学类型: 整数:byte(0-255),integer(-32768-32767),long(-21亿-21亿) 小数:single,double,currency(货币类型,包含4位小数,-922337203685477.5808-922337203685477.5807) 文字类型:string 时间类型:Date(Time) 其他类型:null(空)empty(已撤销或未初始化)object(任何对象)
全栈程序员站长
2022/09/16
1.1K0
按键精灵——如何实现办公自由(二)
上一期的这个大饼,那今天就来讲一下里面的定时器,虽然名字叫定时器,看着好似很牛逼,其实就是一个循环逻辑,仅此而已。
Ed_Frey
2020/04/27
1.6K0
按键精灵——如何实现办公自由(二)
2021-06-05按键精灵实现远程获取消息内容
用户3519280
2023/07/06
3080
Android必看面试题——基础篇
温馨提示:文章干货内容较多,可能一次看不完,建议点个“在看”并收藏,下次再查阅不迷路~
Android扫地僧
2020/03/19
3K1
Android必看面试题——基础篇
JavaScript 权威指南第七版(GPT 重译)(六)
JavaScript 语言是在 1994 年创建的,旨在使 Web 浏览器显示的文档具有动态行为。自那时以来,该语言已经发生了显著的演变,与此同时,Web 平台的范围和功能也迅速增长。今天,JavaScript 程序员可以将 Web 视为一个功能齐全的应用程序开发平台。Web 浏览器专门用于显示格式化文本和图像,但是,像本机操作系统一样,浏览器还提供其他服务,包括图形、视频、音频、网络、存储和线程。JavaScript 是一种使 Web 应用程序能够使用 Web 平台提供的服务的语言,本章演示了您如何使用这些最重要的服务。
ApacheCN_飞龙
2024/03/23
9380
JavaScript 权威指南第七版(GPT 重译)(六)
最全面、最详细web前端面试题及答案总结
本章是HTML考点的⾮重难点,因此我们采⽤简略回答的⽅式进⾏撰写,所以不会有太多详细的解释。我们约定,每个问题后我们标记『✨ 』的为⾼频⾯试题 doctype的作⽤是什么?✨ DOCTYPE是html5标准⽹⻚声明,且必须声明在HTML⽂档的第⼀⾏。来告知浏览器的解析器⽤什么⽂档标准解析这个 ⽂档,不同的渲染模式会影响到浏览器对于 CSS 代码甚⾄ JavaScript 脚本的解析 ⽂档解析类型有: BackCompat:怪异模式,浏览器使⽤⾃⼰的怪异模式解析渲染⻚⾯。(如果没有声明DOCTYPE,默认就是这个模式) CSS1Compat:标准模式,浏览器使⽤W3C的标准解析渲染⻚⾯。 IE8还有⼀种介乎于上述两者之间的近乎标准的模式,但是基本淘汰了。
全栈程序员站长
2022/08/01
8.2K0
计算机常用算法对照表整理
常用对照: NLP CRF算法: 中文名称条件随机场算法,外文名称conditional random field algorithm,是一种数学算法,是2001年提出的,基于遵循马尔可夫性的概率图模型。 全部对照 第一部分、计算机算法常用术语中英对照 Data Structures 基本数据结构 Dictionaries 字典 Priority Queues 堆 Graph Data Structures 图 Set Data Structures 集合 Kd-Tre
学到老
2018/03/16
2K0
Python100Days
这可能是我目前发现最好最好的Python教程了,故整理至我的博客。 原项目GitHub地址https://github.com/jackfrued/Python-100-Days
一点儿也不潇洒
2018/08/07
9.9K0
软件设计师复习资料「建议收藏」
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说软件设计师复习资料「建议收藏」,希望能够帮助大家进步!!!
Java架构师必看
2022/06/27
6.5K0
硬件资料和软件资料_电脑硬件检测工具哪个好
2. BIOS报警声意义 3. BIOS自检与开机故障相关问题 5. 计算机几个常见指标的意义 6. 显卡GPU参数 7. 显示卡常见故障全面解决 8. 集成声卡常见故障及解决 9. 显示器经典故障以及处理办法 10. AMI主板代码大全(BIOS-ID)
全栈程序员站长
2022/11/01
4.6K0
100天学会python
目前我使用的Python 3.7.x的版本是在2018年发布的,Python的版本号分为三段,形如A.B.C。其中A表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加A;B表示功能更新,出现新功能时增加B;C表示小的改动(例如:修复了某个Bug),只要有修改就增加C。如果对Python的历史感兴趣,可以阅读名为《Python简史》的网络文章。
她的店里只卖樱花
2023/01/06
3.4K0
100天学会python
渗透测试常规操作记录(下)
Linux 操作系统&内核版本&环境变量 >cat /etc/issue >cat /etc/*-release >cat /etc/lsb-release >cat /etc/redhat-release cat /proc/version >uname -a >uname -mrs >rpm -q kernel >dmesg | grep Linux >ls /boot | grep vmlinuz- >cat /etc/profile >cat /etc/bashrc >cat ~/.bash_pr
天钧
2020/10/23
5.8K0
渗透测试常规操作记录(下)
计算机视觉学术速递[10.19]
【1】 HRFormer: High-Resolution Transformer for Dense Prediction 标题:HRFormer:用于密度预测的高分辨率Transformer 链接:https://arxiv.org/abs/2110.09408
公众号-arXiv每日学术速递
2021/10/21
2.7K0
人工智能学术速递[10.19]
【1】 Discovering and Achieving Goals via World Models 标题:通过世界模型发现和实现目标 链接:https://arxiv.org/abs/2110.09514
公众号-arXiv每日学术速递
2021/10/21
1.5K0
机器学习学术速递[7.5]
【1】 Combinatorial Optimization with Physics-Inspired Graph Neural Networks 标题:基于物理启发图神经网络的组合优化
公众号-arXiv每日学术速递
2021/07/27
1.6K0
相关推荐
按键精灵——qq发图片
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验