主题
主从同步绑定 - InputSyncLink
函数简介
将主实例上的键鼠事件(HOST_API / FG_REAL)异步投递给从实例回放。不等待从端返回;从端失败只记日志,不阻塞主端。回放带 SYNC_REPLAY 标记,不会环路录制。
InputSyncLink(master, …) 与绑定从实例均需 InputSync 权限。须保证从实例已 BindWindow 且能接收同等键鼠。
接口名称
InputSyncLinkDLL调用
c
int InputSyncLink(long master, long slave, int enable);参数说明
| 参数名 | 类型 | 说明 |
|---|---|---|
| master | 长整数型 | 主实例(事件源),由 CreateCOLAPlugInterFace 接口生成。 |
| slave | 长整数型 | 从实例;enable=0 且 slave=0 时解绑 master 上全部从实例。 |
| enable | 整数型 | 非 0 绑定;0 解绑。 |
常用调用
| 调用 | 含义 |
|---|---|
InputSyncLink(m, s, 1) | 绑定一对 |
InputSyncLink(m, s, 0) | 解绑一对 |
InputSyncLink(m, 0, 0) | 解绑全部 |
示例
SDK 调用
cpp
#include "OLAPlugServer.h"
OLAPlugServer master;
OLAPlugServer slave;
// BindWindow(master/slave, ...)
master.EnableInputSync(1);
master.InputSyncLink(slave.GetInstance(), 1); // 绑定
// ... 在 master 上操作键鼠 ...
master.InputSyncLink(0, 0); // 解绑全部csharp
using OLAPlug;
var master = new OLAPlugServer();
var slave = new OLAPlugServer();
master.EnableInputSync(1);
master.InputSyncLink(slave.GetInstance(), 1);
master.InputSyncLink(0, 0);python
from OLAPlugServer import OLAPlugServer
master = OLAPlugServer()
slave = OLAPlugServer()
master.EnableInputSync(1)
master.InputSyncLink(slave.GetInstance(), 1)
master.InputSyncLink(0, 0)java
import com.olaplug.OLAPlugServer;
OLAPlugServer master = new OLAPlugServer();
OLAPlugServer slave = new OLAPlugServer();
master.EnableInputSync(1);
master.InputSyncLink(slave.GetInstance(), 1);
master.InputSyncLink(0, 0);go
import "github.com/ola/olaplug/olaplug"
master, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
slave, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer master.ReleaseObj()
defer slave.ReleaseObj()
master.EnableInputSync(1)
master.InputSyncLink(slave.GetInstance(), 1)
master.InputSyncLink(0, 0)rust
use olaplug::OLAPlugServer;
let master = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
let slave = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
master.enable_input_sync(1);
master.input_sync_link(slave.get_instance(), 1);
master.input_sync_link(0, 0);cpp
var master = com("OlaPlug.OlaSoft")
var slave = com("OlaPlug.OlaSoft")
master.EnableInputSync(1);
master.InputSyncLink(slave.GetInstance(), 1);
master.InputSyncLink(0, 0);vbscript
Set master = CreateObject("OlaPlug.OlaSoft")
Set slave = CreateObject("OlaPlug.OlaSoft")
master.EnableInputSync(1)
master.InputSyncLink(slave.GetInstance(), 1)
master.InputSyncLink(0, 0)text
.局部变量 master, OLAPlug
.局部变量 slave, OLAPlug
master.创建 ()
slave.创建 ()
master.EnableInputSync(1)
master.InputSyncLink(slave.取对象指针 (), 1)
master.InputSyncLink(0, 0)aardio
import OLAPlugServer;
var master = OLAPlugServer();
var slave = OLAPlugServer();
master.EnableInputSync(1);
master.InputSyncLink(slave.GetInstance(), 1);
master.InputSyncLink(0, 0);text
变量 master <类型 = OLAPlugServer>
变量 slave <类型 = OLAPlugServer>
master = 新建 OLAPlugServer
slave = 新建 OLAPlugServer
master.EnableInputSync(1);
master.InputSyncLink(slave.GetInstance(), 1);
master.InputSyncLink(0, 0);cpp
#include "OLAPlugServer.h"
OLAPlugServer master;
OLAPlugServer slave;
master.EnableInputSync(1);
master.InputSyncLink(slave.GetInstance(), 1);
master.InputSyncLink(0, 0);原生 DLL 调用
cpp
long master = CreateCOLAPlugInterFace();
long slave = CreateCOLAPlugInterFace();
// BindWindow(master/slave, ...)
EnableInputSync(master, 1);
InputSyncLink(master, slave, 1); // 绑定
// ... 在 master 上操作键鼠 ...
InputSyncLink(master, 0, 0); // 解绑全部csharp
using System.Runtime.InteropServices;
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long CreateCOLAPlugInterFace();
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int EnableInputSync(long instance, int enable);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int InputSyncLink(long master, long slave, int enable);
long master = CreateCOLAPlugInterFace();
long slave = CreateCOLAPlugInterFace();
EnableInputSync(master, 1);
InputSyncLink(master, slave, 1);
InputSyncLink(master, 0, 0);python
from ctypes import CDLL, c_int64
ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
master = ola.CreateCOLAPlugInterFace()
slave = ola.CreateCOLAPlugInterFace()
ola.EnableInputSync(master, 1)
ola.InputSyncLink(master, slave, 1)
ola.InputSyncLink(master, 0, 0)返回值
| 返回值 | 说明 |
|---|---|
1 | 成功。 |
0 | 失败(无权限、无效实例等)。 |
