Skip to content

发送字符串IME2 - SendStringIme2

函数简介

利用 IME 通道向指定窗口输入文字。也可安装 / 卸载 IME 通道(mode=200/300)。

SendStringIme 的差异:可指定 hwnd,并负责通道的安装与卸载。请在 Bind 之前先执行 mode=200

后台窗口若必须激活才收字,绑定时可配合 dx.public.active.api|dx.public.active.message,见 BindWindowEx

接口名称

SendStringIme2

DLL调用

int SendStringIme2(long ola, long hwnd, string str, int mode);

参数说明

参数名类型说明
ola长整数型OLAPlug对象的指针,由 CreateCOLAPlugInterFace 接口生成。
hwnd长整数型目标窗口句柄。为 0 时使用当前 绑定窗口mode200 / 300 时可忽略。
str字符串要发送的文本。mode200 / 300 时可为空。
mode整数型见下方说明。

mode 取值

说明
0 / 1 / 2向窗口输入文字。三种投递方式,兼容性因目标窗口而异,可按实际效果选用。
200安装 IME 通道,全局只需一次必须在 Bind 之前调用
300卸载 IME 通道。建议在 UnBindWindow 之后调用。

示例

SDK 调用

cpp
#include "OLAPlugServer.h"

OLAPlugServer ola;
// 1. Bind 之前安装 IME 通道(全局一次即可)
ola.SendStringIme2(0, "", 200);

long hwnd = ola.FindWindow("", "记事本");
if (hwnd != 0) {
    int ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0);
    if (ret == 1) {
        // 2. 输入文字;hwnd 为 0 时发给当前绑定窗口
        ola.SendStringIme2(0, "你好", 0);
        ola.UnBindWindow();
    }
}

// 3. 不再使用时卸载
ola.SendStringIme2(0, "", 300);
csharp
using OLAPlug;

var ola = new OLAPlugServer();
ola.SendStringIme2(0, "", 200);

long hwnd = ola.FindWindow("", "记事本");
if (hwnd != 0)
{
    int ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0);
    if (ret == 1)
    {
        ola.SendStringIme2(0, "你好", 0);
        ola.UnBindWindow();
    }
}

ola.SendStringIme2(0, "", 300);
python
from OLAPlugServer import OLAPlugServer

ola = OLAPlugServer()
ola.SendStringIme2(0, "", 200)

hwnd = ola.FindWindow("", "记事本")
if hwnd != 0:
    ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0)
    if ret == 1:
        ola.SendStringIme2(0, "你好", 0)
        ola.UnBindWindow()

ola.SendStringIme2(0, "", 300)
java
import com.olaplug.OLAPlugServer;

OLAPlugServer ola = new OLAPlugServer();
ola.SendStringIme2(0, "", 200);

long hwnd = ola.FindWindow("", "记事本");
if (hwnd != 0) {
    int ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0);
    if (ret == 1) {
        ola.SendStringIme2(0, "你好", 0);
        ola.UnBindWindow();
    }
}

ola.SendStringIme2(0, "", 300);
go
import "github.com/ola/olaplug/olaplug"

ola, _ := olaplug.NewOLAPlugServer("OLAPlug_x64.dll")
defer ola.ReleaseObj()
ola.SendStringIme2(0, "", 200)

hwnd := ola.FindWindow("", "记事本")
if hwnd != 0 {
    ret := ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0)
    if ret == 1 {
        ola.SendStringIme2(0, "你好", 0)
        ola.UnBindWindow()
    }
}

ola.SendStringIme2(0, "", 300)
rust
use olaplug::OLAPlugServer;

let ola = OLAPlugServer::new("OLAPlug_x64.dll").unwrap();
ola.send_string_ime2(0, "", 200);

let hwnd = ola.find_window("", "记事本");
if hwnd != 0 {
    let ret = ola.bind_window_ex(hwnd, "dx", "windows", "windows", "", 0);
    if ret == 1 {
        ola.send_string_ime2(0, "你好", 0);
        ola.un_bind_window();
    }
}

ola.send_string_ime2(0, "", 300);
cpp
var ola = com("OlaPlug.OlaSoft")
ola.SendStringIme2(0, "", 200)
var hwnd = ola.FindWindow("", "记事本")
if(hwnd) {
    var ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0)
    if(ret == 1) {
        ola.SendStringIme2(0, "你好", 0)
        ola.UnBindWindow()
    }
}
ola.SendStringIme2(0, "", 300)
vbscript
Set ola = CreateObject("OlaPlug.OlaSoft")
ola.SendStringIme2 0, "", 200
hwnd = ola.FindWindow("", "记事本")
If hwnd <> 0 Then
    ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0)
    If ret = 1 Then
        ola.SendStringIme2 0, "你好", 0
        ola.UnBindWindow
    End If
End If
ola.SendStringIme2 0, "", 300
text
.局部变量 ola, OLAPlug
.局部变量 hwnd, 长整数型
.局部变量 ret, 整数型
ola.创建 ()
ola.SendStringIme2 (0, “”, 200)
hwnd = ola.FindWindow ("", “记事本”)
.如果真 (hwnd ≠ 0)
    ret = ola.BindWindowEx (hwnd, “dx”, “windows”, “windows”, “”, 0)
    .如果真 (ret = 1)
        ola.SendStringIme2 (0, “你好”, 0)
        ola.UnBindWindow ()
    .如果真结束
.如果真结束
ola.SendStringIme2 (0, “”, 300)
aardio
import OLAPlugServer;
var ola = OLAPlugServer();
ola.SendStringIme2(0, "", 200);
var hwnd = ola.FindWindow("", "记事本");
if(hwnd){
    var ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0);
    if(ret == 1){
        ola.SendStringIme2(0, "你好", 0);
        ola.UnBindWindow();
    }
}
ola.SendStringIme2(0, "", 300);
text
变量 ola <类型 = OLAPlugServer>
ola = 新建 OLAPlugServer
ola.SendStringIme2(0, "", 200)
长整数 hwnd = ola.FindWindow("", "记事本")
如果真 (hwnd ≠ 0)
    整数 ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0)
    如果真 (ret = 1)
        ola.SendStringIme2(0, "你好", 0)
        ola.UnBindWindow()
    结束
结束
ola.SendStringIme2(0, "", 300)
cpp
#include "OLAPlugServer.h"

OLAPlugServer ola;
ola.SendStringIme2(0, "", 200);
int64_t hwnd = ola.FindWindow("", "记事本");
if (hwnd != 0) {
    int32_t ret = ola.BindWindowEx(hwnd, "dx", "windows", "windows", "", 0);
    if (ret == 1) {
        ola.SendStringIme2(0, "你好", 0);
        ola.UnBindWindow();
    }
}
ola.SendStringIme2(0, "", 300);

原生 DLL 调用

cpp
long instance = CreateCOLAPlugInterFace();
SendStringIme2(instance, 0, "", 200);
BindWindowEx(instance, hwnd, "dx", "windows", "windows", "", 0);
SendStringIme2(instance, 0, "你好", 0);
UnBindWindow(instance);
SendStringIme2(instance, 0, "", 300);
csharp
using System.Runtime.InteropServices;
using System.Text;

[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern long CreateCOLAPlugInterFace();
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int BindWindowEx(long ola, long hwnd, string display, string mouse, string keyboard, string pub, int mode);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int UnBindWindow(long ola);
[DllImport("OLAPlug_x64.dll", CallingConvention = CallingConvention.StdCall)]
static extern int SendStringIme2(long ola, long hwnd, string str, int mode);

long instance = CreateCOLAPlugInterFace();
SendStringIme2(instance, 0, "", 200);
BindWindowEx(instance, hwnd, "dx", "windows", "windows", "", 0);
SendStringIme2(instance, 0, "你好", 0);
UnBindWindow(instance);
SendStringIme2(instance, 0, "", 300);
python
from ctypes import CDLL, c_int64

ola = CDLL("OLAPlug_x64.dll")
ola.CreateCOLAPlugInterFace.restype = c_int64
instance = ola.CreateCOLAPlugInterFace()
ola.SendStringIme2(instance, 0, b"", 200)
ola.BindWindowEx(instance, hwnd, b"dx", b"windows", b"windows", b"", 0)
ola.SendStringIme2(instance, 0, "你好".encode("utf-8"), 0)
ola.UnBindWindow(instance)
ola.SendStringIme2(instance, 0, b"", 300)

返回值

返回值说明
1成功。
0失败。

注意事项

项目说明
安装时机mode=200 必须在 Bind 之前调用,全局安装一次即可;退出或不再使用时用 mode=300 卸载。
hwnd / strhwnd=0 发给当前绑定窗口;mode=200/300hwndstr 均可忽略或传空。
后台激活后台若窗口要求激活才收字,绑定 public 可加 dx.public.active.apidx.public.active.api|dx.public.active.message
与 SendStringImeSendStringIme 只向绑定窗口发组合结果,且要求 publicdx.public.input.ime
与 SendString普通消息投递请用 SendString / SendString2,不必安装 IME 通道。