python调用按键精灵插件_按键精灵——如何实现办公自由(四)
这是奔跑的键盘侠的第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调用按键精灵插件_按键精灵——如何实现办公自由(四)相关推荐
- python调用按键精灵插件_按键精灵——办公常用脚本集锦
这是奔跑的键盘侠的第123篇文章 临时起意,想想按键精灵的官方视频教程虽然比较有条理,但是毕竟内容有限,甚至重点是在讲游戏挂机.其实很多人都不怎么玩游戏,应用场景一旦转移至办公,很多人可能就有点苍白了 ...
- python调用按键精灵插件_按键精灵自动寻路系列换算地图坐标寻路法
金猪脚本(原飞猪脚本)以按键精灵教学为主,涉及UiBot,Python,Lua等脚本编程语言,教学包括全自动办公脚本,游戏辅助脚本,引流脚本,网页脚本,安卓脚本,IOS脚本,注册脚本,点赞脚本,阅读脚 ...
- python调用大漠找图_按键精灵大漠插件找图使用方法
1 先将大漠插件下载下来,百度上搜索一下,或者按键精灵官方论坛里搜索,一大堆 2 将dm.dll和RegDll.dll这两个文件复制到按键精灵目录下的plugin目录里. 运行按键精灵,新建一个脚本 ...
- python调用按键精灵插件_开发中IDE的选择?如何在VsCode上配置CC++,Java,Python环境...
前言 工欲善其事必先利其器,这也是老生常谈的事情了.在做日常开发中,让我感受到一个顺手的开发工具的重要性.截至目前对于不同语言自己也使用过很多开发工具,有一些简单的编辑器例如:notepad++.Ed ...
- python调用第三方软件发信代码_【IT专家】python调用第三方邮件接口
本文由我司收集整编,推荐下载,如有疑问,请与我司联系 python 调用第三方邮件接口 2017/08/10 1 单线程发送 #!/usr/bin/env python# -*- coding: UT ...
- python调用c语言函数_从Python调用C函数
python调用c语言函数 We can call a C function from Python program using the ctypes module. 我们可以使用ctypes模块从P ...
- python调用cmd执行命令_详解python调用cmd命令三种方法
目前我使用到的python中执行cmd的方式有三种 使用os.system("cmd") 该方法在调用完shell脚本后,返回一个16位的二进制数,低位为杀死所调用脚本的信号号码, ...
- python调用有道翻译_如何用python“优雅的”调用有道翻译?
前言 其实在以前就盯上有道翻译了的,但是由于时间问题一直没有研究(我的骚操作还在后面,记得关注),本文主要讲解如何用python调用有道翻译,讲解这个爬虫与有道翻译的js"斗争"的 ...
- python调用按键精灵插件_[LOG]VC++项目导入大漠插件
0x00 前言 大漠综合插件(dm.dll)采用vc6.0编写,是一款集前后台,文字识别,图色,键鼠,窗口,内存,DX,Call等功能于一身的综合插件. 大漠综合插件(dm.dll)主要用于按键精灵. ...
最新文章
- linux 挂载分区inode,Linux中分区挂载和LABEL的指定
- pmdk -- libpmemlog 介绍
- L1-004.计算摄氏温度
- jax-rs jax-ws_使用JAX-RS的HTTP缓存
- gpt windows linux,UEFI+GPT环境下安装Windows+Linux+OS X
- win10 linux开发环境搭建,win10子系统linux.ubuntu开发环境搭建
- C语言基础教程篇之程序结构
- HttpClient Util 工具
- “the import java.io cannot be resolved”错误的解决方法
- 数字序列中某一位的数字
- python的ogr模块_Python与开源GIS:使用OGR模块打开矢量数据
- 通达信c语言接口,通达信数据接口及日线数据格式
- xshell通过隧道连接_如何在xshell中创建一个SSH隧道
- AtCoder Grand Contest 007 题解
- 美国音乐学院计算机音乐专业排名2015年,美国音乐学院排名
- 台州银行笔试考什么_【精选】台州银行历年真题笔试题面试题大全.pdf
- jQuery菜鸟教程03
- 对数据运营工作的思考及优化方向
- 运动学习与控制-学习笔记(三)——运动控制理论
- jxls对比_久别重逢 QQ影音4.0跟旧版对比更新了什么?