调用_QShot 公开

H-D-G 更新于 2024-11-02 11:36 | 5 | (0) | 10
分类
点赞
更多信息
分享人 H-D-G
分享时间 2024-10-26 17:39
最后更新 2024-11-02 11:36
修订版本 3
子程序大小 20.7 KB
Quicker版本 1.43.34.0

介绍

可扩展性强的截图组件:QuickerScreenShot

from QWin

动作:QShot - by H-D-G - 动作信息 - Quicker

运行逻辑说明

组件分为“加载”和“调用”两部分,本子程序是“调用”部分,内部集成了“加载”逻辑,如果未加载则自动加载,如果已加载则直接调用。

*为什么要分为两部分:

后台常驻加速:组件在加载后就会一直保留在后台,等待下一次调用。如果每次调用都要加载一遍,速度就慢了。

预加载:分开还有一个原因就是可以进行组件的预加载(把本子程序里的第一个步骤提取出来放入单独的动作,在Quicker启动时执行该动作即可实现预加载),只要提前加载组件,在正式调用时就不需要临时加载了(加载并不会显示窗口,这一步是在后台执行的)

参数说明

按钮定义:接受List<CommonOperationItem>对象(以及对应的Json)或简单格式的操作项列表

在界面上表现为右下角的按钮:

菜单定义:同样接受List<CommonOperationItem>对象(以及对应的Json)或简单格式的操作项列表

在界面上表现为(点击工具栏最右侧的“三个点”按钮按下Space空格键弹出):

自定义操作

自定义操作有2种类型:动作、子程序 

动作

通常在“|”前填写标题(图标会自动获取),“|”后填写调用的动作Id(可以是本地id或动作库id)

输入

在动作关联标签页中勾选这两个选项

然后就可以在动作中的第一个截图步骤中获取到图片了:


子程序

输入

在“|”后直接填写子程序的名称,可以在子程序名称后加上一个“?”来传递自定义参数,每对参数之间用“&”分隔,参数名在前,参数值在后,两者用“=”连接,例如:

[fa:Light_FontCase]文字识别|ocr?input1=test&input2=hello

在上面这个例子中,“input1=test&input2=hello”表示为子程序传递两个参数:

  • input1:test
  • input2:hello

组件在调用子程序时会传递预设的参数,所有参数如下图

  • _img:框选区域的图片,获取后可进行自定义的处理(此项可输出)
  • _notClose:组件通常会在调用子程序后直接关闭(此时不会等待子程序运行完),如果定义了_notClose变量,组件会等待子程序运行完成,并检查_notClose是否为True,如果为True,组件将不会关闭,否则将关闭(如果想要输出信息到组件,一定要给_notClose赋值True)
  • _name:触发按钮对应的操作项的标题(如果给多个按钮都设置了同一个子程序回调,可以使用这个来区分需要执行的操作)
  • _item:触发按钮对应的操作项(如果使用组件时提供了对象或Json,并设置了其他属性,可以在这里获取到更详细的信息)
  • _win:WPF窗口对象,通常不会用到
  • _rect:框选的区域,格式为left,top,width,height(此项可输出)

输出

  • _img:如果_notClose为True,则将返回的图片更新到界面上(将框选的图片替换为返回的图片)
  • _rect:如果_notClose为True,则将返回的区域更新到界面上(框选对应的范围)

注册局部快捷键

组件支持为自定义操作注册快捷键,在截图时可以按下快捷键触发对应操作


在操作项的说明(CommonOperationItem.Description)中定义快捷键,格式为:<ModifierKeys>+<Key>

  • ModifierKeys:修饰键,可选值:Control(可用“Ctrl”代替),Alt,Shift
  • Key:触发键,可选值过多这里不一一列举,简单说明一下常用的:A-Z,D0-D9(“D”可省略),F1-F12

注意:

  1. Space(空格)和Esc按键被内部使用了,不支持注册这两个按键(但它们的组合键是支持的,如:Alt+Space)
  2. <ModifierKeys>可以不写,表示使用<Key>触发(不建议,因为没有拦截按键,此时可能会与输入法冲突)

支持注册鼠标按键:

格式为:<MouseButton>,MouseButton可选值:XButton2,XButton1,Right,Middle(不支持左键,左键用于移动框选区域)

注意:会覆盖默认鼠标键行为(比如按下中键贴图,更多默认操作见下方“使用技巧”标题)

API

QShot在表达式中注册了别名,如果需要,你可以在表达式中访问QShot公开的一些属性和方法(通常来说,你并不需要了解这些内容,因为前面的功能是对这部分内容的简化与封装)

公共属性

  • IsUsing:组件是否正在被使用
  • Handle:截图窗口的句柄(通常用不上)

公共方法

  • Show:开始截图(不会等待截图结束)
  • Hide:结束截图
  • GetDpi:获取dpi缩放比例,对应Windows设置里的:
  • CopyImage:复制框选区域的图片
  • SwitchEditingMode:切换编辑工具,可选值:geometry(矩形)、arrow(箭头)、pencil(铅笔),如果输入空字符串,则表示恢复为拖拽模式
  • SetBackground:设置整个截图界面的背景(不仅仅局限于框选区域,而是整个屏幕)
  • GetImage:获取框选区域的图片
  • ShowMenu:显示菜单

注意:大部分方法都需要在UI线程上执行

使用技巧

  • 中键:贴图
  • 左键双击:复制
  • Esc:退出
  • Space:显示菜单
  • 所有由组件产生的贴图(图片窗口)的窗口标识都是“QShot”,可以用这个来快速关闭贴图

子程序的参数

输入
模式 截取图片的屏幕区域类型 Text
截图前延时 等待多少毫秒后开始截图 Integer
截图区域 要截取的屏幕坐标位置(像素值),格式为:left,top,right,bottom Text
窗口句柄 Integer
按钮定义 自定义的按钮定义,用于存放一些常用的操作 Any
菜单定义 自定义的菜单定义,用于存放一些不太常用的操作,点击最右侧的”三个点“按钮开启 Any
输出

最近更新

修订版本 更新时间 更新说明
3 2024-11-02 11:36 ~
2 2024-11-02 11:35 ~ 修复「只有在框选区域内按鼠标键才有效」的bug
1 2024-11-02 11:10 + 支持注册鼠标键按下(不包括左键)

最近讨论

使用问题 · 91
原++ 2024-10-31 14:58 H-D-G 2024-10-31 21:44