影刀、Quicker和python之间的变量转换

影刀、Quicker和python之间的变量转换

一、Quicker

1、Quicker变量传入python

详情可以参考:https://getquicker.net/kc/manual/doc/quicker-starter

(1)通过python先执行动作后在用python接收参数

在Quicker的最好添加有一步停止,里面的返回值就是要传入的变量了,这个是运行完成后传输的变量

image-20251112144227973

python接收,c115e161-49f7-4402-b0a8-c3a97fc23cd4为quicker动作id。c为等待时间,这里即时等待2s,默认最长等待20s。out即为结果。

from subprocess import Popen, PIPE
proc = Popen(
[
"C:\Program Files\Quicker\QuickerStarter.exe",
"-c",
"runaction:c115e161-49f7-4402-b0a8-c3a97fc23cd4"
],
stdout=PIPE,
)
out, err = proc.communicate()
proc.wait()

text = out.decode('utf-8') # 解码成字符串
print(text)

这里是python调用quicker动作后在得到这个变量。

(2)通过终端来传输变量给python

后面变量还可以加的,允许多个变量。这个是传变量到py。

image-20251112151136942

python接收,可以收一个变量,也可以是多个变量。

import sys

# 获取命令行传入的第一个参数
arg = sys.argv[1]

# 打印出来
print("接收到的参数是:", arg)
import sys

# sys.argv[0] 是脚本名,后面的都是传入的参数
args = sys.argv[1:] # 获取所有参数

print("接收到的参数有:", args)

# 如果想单独处理每个参数
for i, arg in enumerate(args, 1):
print(f"参数{i}:{arg}")

2、Python变量传入quicker

(1)quicker内置的py脚本操作

py脚本中,通过quicker.context.GetVarValue('变量名')读取动作变量。通过quicker.context.SetVarValue('变量名',value)更新动作变量。例如,先设置一个变量,没有任何值

image-20251112152411158

然后在python脚本当中给这个变量赋值

image-20251112152509915

(2)quicker_in_param接收

py调用quicker时带入参数,只能传一个参数

import subprocess
subprocess.run(["C:\Program Files\Quicker\QuickerStarter.exe","runaction:动作ID或名称?参数"])

quicker那边接收的话就是quicker_in_param这个参数里面了

image-20251112155452059

比如这个参数为zds,那边quicker_in_param的变量的值也就是zds

3、quicker和终端

实现:这里就只讲一下终端启动quicker

powershell

Start-Process "c:/program files/quicker/quickerstarter.exe" -ArgumentList "runaction:动作ID或名称?参数"

cmd

"C:\Program Files\Quicker\QuickerStarter.exe" -c100 "runaction:动作标识?参数内容"

二、影刀

1、影刀和python

实现:用python调用quicker动作再把quicker的参数传递给影刀

在影刀当中新建python模块

image-20251114135908729

以函数的形式返回要返回的变量什么的

# 使用提醒:
# 1. xbot包提供软件自动化、数据表格、Excel、日志、AI等功能
# 2. package包提供访问当前应用数据的功能,如获取元素、访问全局变量、获取资源文件等功能
# 3. 当此模块作为流程独立运行时执行main函数
# 4. 可视化流程中可以通过"调用模块"的指令使用此模块

import xbot
from xbot import print, sleep
from .import package
from .package import variables as glv
from subprocess import Popen, PIPE

def main(args):
pass

def function_one():
proc = Popen(
[
"C:\Program Files\Quicker\QuickerStarter.exe",
"-c",
"runaction:c115e161-49f7-4402-b0a8-c3a97fc23cd4"
],
stdout=PIPE,
)
out, err = proc.communicate()
proc.wait()

text = out.decode('utf-8') # 解码成字符串
return text

然后在影刀当中选择调用模块,其中返回的值就是可以交互的变量了。

2、影刀和quicker

实现:影刀传参数给quicker

只能单向,使用dos指令,命令行来运行quicker动作。

"C:\Program Files\Quicker\QuickerStarter.exe" runaction:动作标识?参数内容

image-20251112162817542