这是奔跑的键盘侠的第174篇文章

作者|我是奔跑的键盘侠

来源|奔跑的键盘侠(ID:runningkeyboardhero)

转载请联系授权(微信ID:ctwott)

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

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

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

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

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

1

任务获取与识别

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

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

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

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消息代码吧,之前也有发过。

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-

© Copyright

奔跑的键盘侠原创作品 | 尽情分享朋友圈 | 转载请联系授权

经典回顾

整天碎碎念的按键精灵到底是个啥?

《按键精灵课程学习目录》

按键精灵

模拟发送qq消息给好友

找图功能改进版(循环找图)

冒泡提示脚本运行状态

直接打开网页、文件、程序的命令

大漠插件的图文识别应用

Python

微信好友云图怎么玩

四则运算(正则表达式的应用)

写一个完整的应用程序

量化分析怎么玩

《Python学习笔记目录》

选题/码字/coding/调试/编辑/排版/修订再修订/推送

看起来简单,却远没有你想的那么轻松和容易

「点赞+转发+留言」是最好的肯定与鼓励

如果你来了,请让我知道至少

你「在看

 

python调用按键精灵插件_按键精灵——如何实现办公自由(四)相关推荐

  1. python调用按键精灵插件_按键精灵——办公常用脚本集锦

    这是奔跑的键盘侠的第123篇文章 临时起意,想想按键精灵的官方视频教程虽然比较有条理,但是毕竟内容有限,甚至重点是在讲游戏挂机.其实很多人都不怎么玩游戏,应用场景一旦转移至办公,很多人可能就有点苍白了 ...

  2. python调用按键精灵插件_按键精灵自动寻路系列换算地图坐标寻路法

    金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚 ...

  3. python调用大漠找图_按键精灵大漠插件找图使用方法

    1 先将大漠插件下载下来,百度上搜索一下,或者按键精灵官方论坛里搜索,一大堆 2 将dm.dll和RegDll.dll这两个文件复制到按键精灵目录下的plugin目录里. 运行按键精灵,新建一个脚本 ...

  4. python调用按键精灵插件_开发中IDE的选择?如何在VsCode上配置CC++,Java,Python环境...

    前言 工欲善其事必先利其器,这也是老生常谈的事情了.在做日常开发中,让我感受到一个顺手的开发工具的重要性.截至目前对于不同语言自己也使用过很多开发工具,有一些简单的编辑器例如:notepad++.Ed ...

  5. python调用第三方软件发信代码_【IT专家】python调用第三方邮件接口

    本文由我司收集整编,推荐下载,如有疑问,请与我司联系 python 调用第三方邮件接口 2017/08/10 1 单线程发送 #!/usr/bin/env python# -*- coding: UT ...

  6. python调用c语言函数_从Python调用C函数

    python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...

  7. python调用cmd执行命令_详解python调用cmd命令三种方法

    目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...

  8. python调用有道翻译_如何用python“优雅的”调用有道翻译?

    前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...

  9. python调用按键精灵插件_[LOG]VC++项目导入大漠插件

    0x00 前言 大漠综合插件(dm.dll)采用vc6.0编写,是一款集前后台,文字识别,图色,键鼠,窗口,内存,DX,Call等功能于一身的综合插件. 大漠综合插件(dm.dll)主要用于按键精灵. ...

最新文章

  1. linux 挂载分区inode,Linux中分区挂载和LABEL的指定
  2. pmdk -- libpmemlog 介绍
  3. L1-004.计算摄氏温度
  4. jax-rs jax-ws_使用JAX-RS的HTTP缓存
  5. gpt windows linux,UEFI+GPT环境下安装Windows+Linux+OS X
  6. win10 linux开发环境搭建,win10子系统linux.ubuntu开发环境搭建
  7. C语言基础教程篇之程序结构
  8. HttpClient Util 工具
  9. “the import java.io cannot be resolved”错误的解决方法
  10. 数字序列中某一位的数字
  11. python的ogr模块_Python与开源GIS:使用OGR模块打开矢量数据
  12. 通达信c语言接口,通达信数据接口及日线数据格式
  13. xshell通过隧道连接_如何在xshell中创建一个SSH隧道
  14. AtCoder Grand Contest 007 题解
  15. 美国音乐学院计算机音乐专业排名2015年,美国音乐学院排名
  16. 台州银行笔试考什么_【精选】台州银行历年真题笔试题面试题大全.pdf
  17. jQuery菜鸟教程03
  18. 对数据运营工作的思考及优化方向
  19. 运动学习与控制-学习笔记(三)——运动控制理论
  20. jxls对比_久别重逢 QQ影音4.0跟旧版对比更新了什么?

热门文章

  1. Windows Media Services 流媒体服务器架设教程
  2. 22考研专业课136总分370双非调剂吉大软院非全经验分享
  3. 系统盘空间容量不足,DiskGenius
  4. 桌面快捷方式打开某个网站
  5. Julius语音识别使用(一)——toolkitDemo配置与运行
  6. 用阳光代替WiFi信号连网,沙特科学家这成果亮了
  7. uniapp 添加scss全局变量、scss公共类
  8. 解决魅族手机上安装签名应用失败的Bug
  9. (小科普)openmv与opencv区别
  10. IM开发之即时通讯服务器Ejabberd的介绍和搭建