Skip to content

发送组合键 - KeyPressHotkey

函数简介

根据组合键字符串一次性完成 按下 → 逆序释放,支持纯修饰键组合(如 ctrl+alt 释放虚拟机鼠标捕获)、多修饰键 + 主键、左右修饰键区分等场景。

接口名称

KeyPressHotkey

DLL调用

int KeyPressHotkey(long ola, string hotkey_str, int delay);

参数说明

参数名类型说明
ola长整数型OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。
hotkey_str字符串组合键字符串,多个键用 + 连接,如 "ctrl+alt""alt+ctrl+a""lctrl+shift+f5"
delay整数型每个按键动作之间的间隔,单位毫秒(ms)。<=0 时使用 KeyDownInterval 配置(走 KeyboardInterval())。

输入格式

  • 分隔符:+(前后空白自动去除)
  • 大小写:不敏感ALT+Aalt+a 等价)
  • 修饰键别名:
输入默认 VK显式左右
ctrl / control / ctlLeft Ctrllctrl / rctrl
alt / menuLeft Altlalt / ralt
shiftLeft Shiftlshift / rshift
winLeft Winlwin / rwin
  • 主键:见 虚拟键码表 - KeyPressCharMap 中的字符串键名(如 af1enter
  • 大写字母不隐式加 Shiftalt+aalt+A 相同;需要 Shift 须显式写 shift(如 ctrl+shift+a

修饰键排序规则

条件行为
组合中 不含 Win修饰键自动排序:Ctrl → Alt → Shift(如 shift+alt+ctrl+actrl+alt+shift+a
组合中 含 Win修饰键 保持用户输入顺序(Microsoft 未定义 Win 在组合中的顺序)
主键(若有)始终 最后 发送

支持的场景

场景示例
纯修饰键(VM 释放鼠标)ctrl+alt
常规快捷键ctrl+calt+f4
多修饰键ctrl+shift+s
左右键区分lctrl+ralt+a

不支持:多个主键(如 ctrl+a+b 返回失败)。

示例

SDK 调用

cpp
#include "OLAPlugServer.h"

OLAPlugServer ola;
// 虚拟机释放鼠标捕获
int ret = ola.KeyPressHotkey("ctrl+alt", 0);
// 发送 Ctrl+Shift+S
ret = ola.KeyPressHotkey("ctrl+shift+s", 0);
csharp
using OLAPlug;

var ola = new OLAPlugServer();
int ret = ola.KeyPressHotkey("ctrl+alt", 0);
ret = ola.KeyPressHotkey("alt+ctrl+a", 0);
python
from OLAPlugServer import OLAPlugServer

ola = OLAPlugServer()
ret = ola.KeyPressHotkey("ctrl+alt", 0)
ret = ola.KeyPressHotkey("ctrl+shift+f5", 0)
java
import com.olaplug.OLAPlugServer;

OLAPlugServer ola = new OLAPlugServer();
int ret = ola.KeyPressHotkey("ctrl+alt", 0);
cpp
var ola = com("OlaPlug.OlaSoft")
var ret = ola.KeyPressHotkey("ctrl+alt", 0)
vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
ret = ola.KeyPressHotkey("ctrl+alt", 0)
text
.局部变量 ola, OLAPlug
ola.创建 ()
ret = ola.KeyPressHotkey (“ctrl+alt”, 0)
aardio
import OLAPlugServer;
var ola = OLAPlugServer();
var ret = ola.KeyPressHotkey("ctrl+alt", 0);
text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
整数 ret = ola.KeyPressHotkey("ctrl+alt", 0)
cpp
#include "OLAPlugServer.h"

OLAPlugServer ola;
int32_t ret = ola.KeyPressHotkey("ctrl+alt", 0);

原生 DLL 调用

cpp
long instance = CreateCOLAPlugInterFace();
KeyPressHotkey(instance, "ctrl+alt", 0);
KeyPressHotkey(instance, "alt+ctrl+a", 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 KeyPressHotkey(long ola, string hotkey_str, int delay);

long instance = CreateCOLAPlugInterFace();
KeyPressHotkey(instance, "ctrl+alt", 0);
python
from ctypes import CDLL, c_int, c_int64

ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
instance = ola.CreateCOLAPlugInterFace()
ola.KeyPressHotkey(instance, b"ctrl+alt", 0)

返回值

返回值说明
1成功。
0失败(无效键名、多主键、按键发送失败等)。

与相关接口的区别

接口用途
KeyDownChar / KeyUpChar单键按住/释放,需自行组合
KeyPressChar单键点按
KeyPressStr字符串逐字输入(含 Shift 大写逻辑)
KeyPressHotkey组合键一键发送,修饰键自动排序/保序