-
Notifications
You must be signed in to change notification settings - Fork 262
background
后台
- BindWindow: 绑定窗口
- BindWindowEx: 扩展绑定窗口
- LockInput: 锁定目标窗口的外部输入
- UnBindWindow: 解除绑定窗口
- IsBind: 判断当前对象是否已绑定窗口
- GetBindWindow: 获取当前对象已经绑定的窗口句柄
绑定指定的窗口,并指定这个窗口的屏幕颜色获取方式,鼠标仿真模式,键盘仿真模式,以及模式设定.
long BindWindow(hwnd,display,mouse,keypad,mode)| 参数 | 类型 | 描述 |
|---|---|---|
| hwnd | int | 指定的窗口句柄 |
| display | string | 屏幕显示模式,取值定义如下 |
| mouse | string | 鼠标仿真模式,取值定义如下 |
| keypad | string | 键盘仿真模式,取值定义如下 |
| mode | int | 模式,取值 0、1 |
display
| 值 | 描述 |
|---|---|
| normal | 正常模式,平常我们用的前台截屏模式 |
| normal.auto | 自动选择普通窗口截图方式,优先使用更合适的后台截图后端 |
| normal.dxgi | dxgi 截图模式,这个速度更快,更省 CPU |
| normal.wgc | wgc 截图模式,支持 Windows 10 1903 及以上版本 |
| gdi | gdi 模式,用于窗口采用 GDI 方式刷新时,此模式占用 CPU 较大 |
| gdi2 | gdi2 模式,此模式兼容性较强,但是速度比 gdi 模式要慢许多 |
| dx | dx 模式,等同于 dx.d3d9 |
| dx2 | dx2 模式,用于窗口采用 dx 模式刷新 |
| dx.d3d9 | d3d9 模式,使用 d3d9 渲染 |
| dx.d3d10 | d3d10 模式,使用 d3d10 渲染 |
| dx.d3d11 | d3d11 模式,使用 d3d11 渲染 |
| dx.d3d12 | d3d12 模式,使用 d3d12 渲染 |
| opengl | opengl 模式,使用 opengl 渲染的窗口 |
| opengl.std | 测试中 |
| opengl.nox | opengl 模式,针对最新夜神模拟器的渲染方式,测试中... |
| opengl.es | 测试中... |
| opengl.fi | 测试中... |
mouse
| 值 | 描述 |
|---|---|
| normal | 正常模式,平常我们用的前台鼠标模式 |
| windows | Windows 模式,采取模拟 windows 消息方式 |
| dx | dx 模式 |
dx 鼠标模式会向目标窗口注入输入 hook,适合部分 DirectInput / Raw Input 场景。目标程序如果做了更严格的输入过滤,仍然可能无法响应。
keypad
| 值 | 描述 |
|---|---|
| normal | 正常模式,平常我们用的前台键盘模式 |
| normal.hd | 硬件按键模式 |
| windows | Windows 模式,采取模拟 windows 消息方式 |
| dx | dx 模式 |
dx 键盘模式和 dx 鼠标模式共用同一套输入 hook。它可以补充 windows 模式无法触达的一些后台输入场景,但不等同于真实硬件输入。
返回值
类型:int
- 0: 失败
- 1: 成功
示例
// display: 前台 鼠标:前台键盘:前台 模式0
op_ret = op.BindWindow(hwnd,"normal","normal","normal",0)
// display: gdi 鼠标:前台 键盘:前台 模式1
op_ret = op.BindWindow(hwnd,"gdi","normal","normal",1)扩展绑定接口,用于显示窗口和输入窗口不是同一个句柄的场景,取值与上述相同。
long BindWindowEx(display_hwnd,input_hwnd,display,mouse,keypad,mode)| 参数 | 类型 | 描述 |
|---|---|---|
| display_hwnd | int | 显示窗口句柄,用于截图、取色、找图等显示相关操作 |
| input_hwnd | int | 输入窗口句柄,用于鼠标和键盘模拟 |
| display | string | 屏幕显示模式 |
| mouse | string | 鼠标仿真模式 |
| keypad | string | 键盘仿真模式 |
| mode | int | 模式,取值 0、1 |
返回值
类型:int
- 0: 失败
- 1: 成功
示例
// 截图取父窗口,输入发给子窗口
op_ret = op.BindWindowEx(parent_hwnd,child_hwnd,"normal","windows","windows",0)说明:BindWindow 等同于显示窗口和输入窗口都传同一个句柄。遇到嵌套窗口、模拟器、浏览器控件时,如果截图区域和实际接收键鼠的窗口不是同一个,可以使用 BindWindowEx 分开指定。
锁定目标窗口的外部输入,防止脚本执行过程中被人工鼠标、键盘操作打断。此接口只对 dx 鼠标、dx 键盘模式有效,普通前台模式和 windows 后台模式不会生效。
long LockInput(lock)| 参数 | 类型 | 描述 |
|---|---|---|
| lock | int | 0 解除锁定;1 锁定鼠标和键盘;2 只锁定鼠标;3 只锁定键盘 |
返回值
类型:int
- 0: 失败
- 1: 成功
示例
op_ret = op.BindWindow(hwnd,"normal","dx","dx",0)
op.LockInput(1)
// 这里执行需要稳定鼠标、键盘状态的操作
op.LockInput(0)注:LockInput 锁的是目标窗口里的外部输入,不会锁住整个系统。锁定后,脚本通过本对象发送的 dx 鼠标、键盘操作仍然可以正常进入目标窗口。UnBindWindow 会自动解除锁定,但脚本里最好还是在操作结束后主动调用 LockInput(0)。
如果只把鼠标绑定成 dx,请使用 LockInput(2);只把键盘绑定成 dx,请使用 LockInput(3)。调用 LockInput(1) 时,鼠标和键盘都需要是 dx 模式。
解除绑定窗口,并释放系统资源
long UnBindWindow()返回值
类型:int
- 0: 失败
- 1: 成功
示例
op_ret = op.UnBindWindow()获取当前对象已经绑定的窗口句柄. 无绑定返回:0
long GetBindWindow()返回值
类型:int
- 0: 没有绑定窗口
示例
op_ret = op.GetBindWindow()该函数旨在判断当前对象是否已绑定窗口
long IsBind()返回值
类型:int
- 0: 表示未绑定状态
- 1: 表示已绑定状态
示例
op_ret = op.IsBind()