Wendigo是一个用于Windows的RPA库(64位)。

Wendigo的Python项目详细描述


温迪戈比

Wendigo

WendigoPy是一个用于Windows的RPA库(64位)。在

小心

关于模拟

WendigoPy使用SendInput来模拟输入(实现为WendigoCs)。
如果你是新手,请注意以下事项。在

  • 它不会等到输入被处理。在
  • 您发送的输入不能被取消。在
  • 因此,不要一次或同时发送多个输入。
    一旦你做到了,你发送的信息将是不可阻挡的。在
  • 按下的键必须松开。
    如果您在程序中按下了一些键,请手动按下并释放这些键以恢复。在
  • 有些应用程序忽略了这种类型的模拟。在

关于出口

如果出了问题,你应该立即阻止温迪戈。
这些是退出的方法。在

  • 按控制台上显示的退出键。
    如果你不换的话,这些键是两个换档键(LShift+RShift)。在
  • 右键单击显示“W”的任务栏图标,然后选择“退出”。在
  • 如果是紧急情况,请按Ctrl+Alt+Del并由任务管理器终止流程。
    这种方式阻止了发送新的输入,但请记住我之前告诉过您的“您发送的输入将是不可阻挡的”。在

要求

  • Windows(64位)
    在Windows 10上测试。在
  • Python 3
    在3.8.0上测试。在
  • Tesseract
    如果你想用OCR的话。在

安装

pip install wendigo

使用

Wendigo是一个事件驱动的应用程序。在

^{pr2}$

钩子

像这样钩住键盘或鼠标的事件。
即使另一个窗体处于活动状态,它也可以工作。在

from typing import List
from wendigo import Keys, Wendigo as w
from wendigo.device import DeviceState
from wendigo.screen import TargetForm

def key_up(state: DeviceState):
    # Shows which keys are pressed.
    print(state.key.keys)
    # Shows where the cursor is.
    print(state.mouse.position)
    # Shows the state of wheel.
    print(state.mouse.scroll)

# Runs key_up when you release Ctrl+Alt+W.
w.event_dispatcher.key_up("key_up", [Keys.ControlKey, Keys.AltKey, Keys.W], key_up)

def mark_by_drag(targets: List[TargetForm]):
    # Shows area where you marked.
    print(targets[0].area)

# Runs mark_by_drag when you drag with Ctrl.
w.target_marker.mark_by_drag(mark_by_drag, keys=[Keys.ControlKey])

# Blocks until Wendigo is stopped.
w.run()

模拟

像这样模拟键盘或鼠标事件。
确保在按键之前激活了文本编辑器。在

from wendigo import Keys, Point, Wendigo as w
from wendigo.device import DeviceState, Inputs

def key_up(state: DeviceState):
    # Types "Hello World!".
    w.event_simulator.type_text("Hello World!")
    # Need more manual way?
    # Let's type that again in another way.
    w.event_simulator.simulate(Inputs() \
        .key_press(Keys.Enter) \
        .key_down(Keys.ShiftKey).key_press(Keys.H).key_up(Keys.ShiftKey) \
        .key_press(Keys.E).key_press(Keys.L, n=2).key_press(Keys.O) \
        .key_press(Keys.Space) \
        .key_down(Keys.ShiftKey).key_press(Keys.W).key_up(Keys.ShiftKey) \
        .key_press([Keys.O, Keys.R, Keys.L, Keys.D]) \
        .key_down(Keys.ShiftKey).key_press(Keys.D1).key_up(Keys.ShiftKey)
    )
    # Move cursor to (0, 0).
    w.event_simulator.point_absolute(Point(0, 0))

# Runs key_up when you release Ctrl+Alt+W.
w.event_dispatcher.key_up("key_up", [Keys.ControlKey, Keys.AltKey, Keys.W], key_up)

# Blocks until Wendigo is stopped.
w.run()

其他

Wendigo还有其他工人。在

  • 活动模仿者
    将输入记录到文件并播放。在
  • 表单控制器
    对表单做些什么,比如让它们活跃起来并捕捉它们的图形。在
  • 目标搜索者
    在屏幕上找到目标。在
  • 文本阅读器
    通过Tesseract从图像中读取文本。在
  • 时间守护者
    它只是一个同步计时器。在

许可证

这个库是在Apache许可证2.0下发布的。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java为什么需要ScheduledExecutorService。shutdown()使用我100%的CPU吗?   java如何加载应用程序。spring框架中的属性?   java立即绘制JFrame   java定时器不允许用户进行编辑   java如何通过在React应用程序中提交值来加载数据   java在Multimultiul maven项目中集成特性(文件)存储在哪里?   java Arjuna JTA事务意外回滚   java禁用edittext 安卓,在视图中使用if-else   java中的错误。图书馆从Matlab调用使用Cplex的Java函数时的路径   Java中的浮点计算错误   Java中C#IEnumerable的等价物是什么?是可协变的,不是可协变的   最终播放商店用户可见的java Apk名称