网站、APP、小程序、软件、硬件定制开发,联系QQ:99605319
资源语言: 中文

1、QT 专用接口:

extern "C" bool DWAPI_SendCmd(QString cmd);


2、C/C++ 使用:

extern "C" bool DWAPI_SendCmdA(const char * cmd);


3、C# 引入 DLL:

[DllImport("dwApiLib.dll", EntryPoint = "DWAPI_SendCmdA", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]

private static extern bool DWAPI_SendCmdA(StringBuilder fullPath);

JS 接口

前提1主程序 DWMain 必须先启动。PS: Linux 平台必须以sudo模式
前提2在输入法 接口设置里打开 “启动Http服务”,如有必要并且修改端口号,默认端口是1606。

PS:默认端口是可以修改的,修改后代码一定要做相应修改。
请求格式1http://127.0.0.1:1606/命令1/命令2/命令3/命令4/...../
请求格式2dwime://命令1/命令2/命令3/命令4/.../
例子多个命令可以组合在一起使用,如:

http://127.0.0.1:1606/show/mode(py26)/skin(black.css)/size(800,360)/pos(500,900)/

这个命令的意思是:
显示键盘,同时切换到“全键盘拼音”,使用皮肤 “black.css”,设置键盘宽度为800高度为360,位置在 500,900的坐标


Java/Pyhton 等接口

java、python、等开发语言可以通过发送GET请求来实现对输入法的调用。


请求模式:GET

请求URL:http://127.0.0.1:1606/

注意:这里的端口号默认是1606,如果需要修改请到设置>>高级>>Http服务,端口。


使用例子:http://127.0.0.1:1606/命令1/命令2/命令3/命令n/



WebSocket通讯接口

前提1主程序 DWMain 必须先启动。PS: Linux 平台必须以sudo模式
前提2打开设置 “接口页” 勾选择 “WebSocket 服务”,并且保持端口与自己的代码是一致的。
创建连接var webSocket;
webSocket = new WebSocket('ws://localhost:20208');
例子

多个命令可以组合在一起使用,中间用:/ 或 \ 或 | 或 空格分开,如:

webSocket.send("show/mode(py26)/skin(black.css)/size(800,360)/pos(500,900)");

这个命令的意思是:
显示键盘,同时切换到“全键盘拼音”,使用皮肤 “black.css”,设置键盘宽度为800高度为360,位置在 500,900的坐标。


dwime:// 接口

仅限支持自定义协议的浏览器里使用。


前提主程序 DWMain 必须先启动。PS: Linux 平台必须以sudo模式
URL请求dwime://
格式dwime://命令1/命令2/命令3/...
例子打开输入法   关闭输入法    打开输入法设置

全键盘拼音               

九宫格拼音               

手写    多合一键盘(建议隐藏工具栏)

身份证键盘    数字键盘   电话   符号键盘   大键盘

邮箱键盘   大写金额    车牌号码   拼音+数字

皮肤:ios   mac  AppleStyle   黑白   宝石蓝    kingF


Windows消息接口


前提 :主程序 DWMain 必须先启动。
源码:安装目录:/api/windows32_qt5.9.4[vs2015]/dwApiLib2.cpp
调用:C_DWIMEAPI_SendCmdA(/命令1/命令2/命令3/..)
例子 :参考安装目录:help/Demo-Windows-Cpp-2 工程
好处:不依赖DLL,不依赖QT环境,32位,64位通用。
dwApiLib2.cpp 源码如下,已经是封装好的代码,直接使用即可。



/**********************************************************************************************************
 *
 * 这个 cpp 通过Windows 消息机制来实现命令的传送,这种方便不依赖DLL更加通用。
 *
 **********************************************************************************************************/

// Includes
#include <windows.h>
#include <stdio.h>



bool C_DWIMEAPI_SendCmdA(const char * cmd)
{
    HWND hWnd = FindWindowW(L"Qt5QWindowToolSaveBits", L"DWMain");
    
    if (IsWindow(hWnd))
    {
        COPYDATASTRUCT   cds;
        memset(&cds, 0, sizeof(cds));
        cds.dwData = *((int*)"aCmd");
        cds.cbData = (DWORD)(strlen(cmd) + 1);
        cds.lpData = (void*)cmd;
    
        DWORD_PTR dwResult = 0;
        SendMessageTimeout(hWnd, WM_COPYDATA, 0, (LPARAM)&cds, SMTO_ABORTIFHUNG, 200, &dwResult);
        
        return (dwResult == 1);
    }
    else
    {
        MessageBoxW(GetForegroundWindow(), L"多文输入法还没有启动!", L"API接口提示", 0);
    }
    
	return false;
}



bool C_DWIMEAPI_SendCmdW(const wchar_t * cmd)
{
    HWND hWnd = FindWindowW(L"Qt5QWindowToolSaveBits", L"DWMain");
    if (IsWindow(hWnd))
    {
        COPYDATASTRUCT   cds;
        memset(&cds, 0, sizeof(cds));
        cds.dwData = *((int*)"wCmd");
        cds.cbData = (DWORD)(sizeof(wchar_t) * (wcslen(cmd) + 1));
        cds.lpData = (void*)cmd;
    
        DWORD_PTR dwResult = 0;
        SendMessageTimeout(hWnd, WM_COPYDATA, 0, (LPARAM)&cds, SMTO_ABORTIFHUNG, 200, &dwResult);
        
        return (dwResult == 1);
    }
    else
    {
        MessageBoxW(GetForegroundWindow(), L"多文输入法还没有启动!", L"API接口提示", 0);
    }
    
	return false;
}

ActiveX、OCX接口

引入控件


<OBJECT ID="dwimeX" WIDTH="0" HEIGHT="0" CLASSID="CLSID:A540489C-0FD6-4F50-BB4C-B30A6081ACCE"></OBJECT>


接口说明:


方法名功能说明参数说明
BSTR IMEGetPath()返回 ocx 所在目录,ocx文件应该和输入法在同一目录
LONG IMEStartup()启动输入法程序,但不显示输入法界面
LONG IMEShow()让输入法显示出来
LONG IMEClose()关闭输入法,但进程不退出
BOOL IMEShowing()查询输入法是否已经显示
BOOL IMERunning()查询输入法进程是否已经启动
LONG IMEConfig()调用输入法的设置窗口
LONG IMETermination()结束输入法进程
LONG IMEReloadSkin()要求输入法重新加载皮肤
LONG IMEReloadConf()要求输入法重新加载所有设置
LONG IMESetMode(BSTR mode)设置输入法键盘模式,模式名可以从设置窗口查询到mode - 模式名称
LONG IMESetKBType(LONG type)已放弃使用无用
LONG IMESetSkin(BSTR skin)设置皮肤,皮肤名称可以从设置窗口查询到skin - 皮肤名称
LONG IMESetSize(LONG w, LONG h)设置输入法键盘大小w - 宽度
h - 高度
LONG IMESetPos(LONG x, LONG y)设置输入法键盘显示的位置x - 坐标X
y - 坐标Y
LONG IMEConfSet(BSTR s, BSTR k, BSTR v) 对输入法的ini文件进行写操作(ini文件内容说明请查看相应文档)s: ini文件设置项的Section名称
k: ini文件设置项的key 名称
v: ini文件设置项的Value
LONG IMESkinSet(BSTR skin, BSTR s, BSTR k, BSTR v)对皮肤的ini文件进行写操作,这个功能比较少使用,使用者必须对皮肤的结构非常了解。skin: 皮肤名称,如果是当前皮肤请传null
s: ini 文件的区块名
k: ini 文件的设置项的键名
v: 要写入ini文件里的值
LONG IMESetBtnVisible(BOOL visible, BSTR ids)显示或隐藏工具栏(切换栏)一个或多个按钮显示或隐藏一个或多个按钮。

visible - true 显示,false 隐藏

ids - 按钮的label 或 命令。(它们在皮肤文件里设置定)

工具栏的ids定义:
1、设置:option
2、关闭: close
3、其它查看皮肤设置里的 ”命令“内容

侧边栏的ids定义:

1、可以直接用皮肤里设置的 label或它对应的命令。

LONG IMESetCapslock(BOOL lock)字母键盘大小写切换lock = true 表示小写
lock = false 表示大写
LONG IMEGetWidth()获取输入法虚拟键盘的界面宽度
(如果输入法未启动直接返回0)

LONG IMEGetHeight()获取输入法虚拟键盘的界面高度
(如果输入法未启动直接返回0)

LONG IMEGetTop()获取输入法虚拟键盘的界面Y坐标
(如果输入法未启动直接返回0)

LONG IMEGetLeft()获取输入法虚拟键盘的界面X坐标
(如果输入法未启动直接返回0)

LONG IMESetPlaceholder(BSTR txt)设置输入法内置输入框的 Placeholder 内容txt - 文本框 placeholder 字符串内容

 

 

命令行调用

前提:主程序 DWMain 必须先以sudo模式启动。PS: Windows 平台直接正常启动

命令行主程序:DWCommand

格式:  DWCommand 命令1  命令2 命令3...

多个命令可以组合在一起使用,如:

DWCommand  show "mode(py26)" "skin(black.css)" "size(800,360)" "pos(500,900)"

注意:带括号的参数要用双引号括起来,如上例子。

这个命令的意思是:显示键盘,同时切换到“全键盘拼音”,使用皮肤 “black.css”,设置键盘宽度为800高度为360,位置在 500,900的坐标。

命令说明

命令

用途 与说明
showicon让已经隐藏的悬浮图标显示出来
hideicon隐藏悬浮图标
iconshowing判断悬浮图标是不是显示中(仅:http、ws,调用方式有效)
disableautoshow禁止自动弹出功能。(输入法重启后恢复)
disableautohide禁止自动隐藏功能。(输入法重启后恢复)
enableautoshow开启自动弹出功能。
enableautohide开启自动隐藏功能。
clearuserdb清空记忆数据
sound播放按键音。可以用于自己行开发的扩展插件。
toFront、toTop键盘重新置顶
reset重置输入法的输入状态,即等同于:“重输”、“重写” 按钮。

mode(name)指定输入模式如:拼音py26, 笔画sk26, 手写hw26,英文en26,拼音九宫格py9,拼音全键盘py26,等等。

更多键盘名称请查看安装目录下的layouts文件夹内的.lay文件,.lay文件名就是键盘调用名。

skin(name)指定当前皮肤
pos(x,y)指定输入法位置
size(w,h)指定输入法尺寸,支持百分比如:size(100%, 50%)表示宽度占屏幕宽度的100%即全屏,高度占一半。
autopos自动获取鼠标位置,把键盘显示在鼠标下方
moffset指定自动弹出时键盘位置的偏移量
adjust当键盘超出屏幕时,可以用这个命令使它自动调整过来
setParent(hWnd)
(仅Windows可用)
键盘内嵌入到一个窗口,窗口句柄 hWnd 转成字符串。
  • hWnd 可以是16进制、10进制,16进制用0x开头,如:setParent(0x8498FDED)

  • hWnd 等于0,即还原输入法键盘取消内嵌模式。

setParent(clsName,winName)
(仅Windows可用)
同上,参数为,窗口ClassName 和 WindowName。

注意:使用setParent 后,宿主窗口关闭前一定要还原输入法取消内嵌模式,不然输入法窗口会跟着结束,可能造成错误。

sign(layName, txt, charset)进入签名模式,使用方法请参考 help\Demo-Windows-C#,C++方法相同。
参数:
  • layName - 用于签名模式的布局文件名。自带有 hwSign.lay

  • txt - 自定义字符串,可以是人名,也可以是其它标记符,signDone通知时会回传

  • charset - 保留

注意:进入签名模式后,手写识别无候选显示。当关闭键盘、或者执行 signEnd 命令才会退出签名模式。

扩展:Linux 平台签名未完成,或者使用者可以自行扩展。重写signSender 插件即可,详细可以联系我们获取帮助。

signDone签名完成,让输入法生成签名图,并发出消息给应用程序。请参考 Demo。
signEnd退出签名模式。close 关闭键盘也会退出签名模式。

close、hide关闭输入法界面
show、open显示输入法
toggle显示或隐藏键盘。当前状态是显示执行这个命令就是隐藏,当前状态是隐藏执行这个命令就是显示。
termination/exit结束输入法进程
注意:请尽量避免使用这个命令。
config, option弹出输入法设置界面
reconf重新加载输入法设置
reskin重新加载皮肤
png设置键盘的背景图,必须是 png文件,并且文件必须在 pngs目录内。
toolbar(param)
  • toolbar(1): 显示Toolbar栏

  • toolbar(0):隐藏Toolbar栏

tbprofile(param)让输入法加载一个Toolbar配置方案,如:tbprofile(profile1.ini)
capslock设置拉丁键盘当前大小写状态
confset、wconfig写配置,参考 Ini设置说明.htm 进行操作,通常用来实现一些比较高级的功能。
moveable(value)设置键盘是否可以移动。
  • moveable(0) - 不可移动

  • moveable(1) - 可以移动

inputbox(param)用于显示或隐藏临时输入框。当目标输入框被键盘挡住时可以打开临时输入框方便用户看到输入内容。

可用参数有,多个参数可以组合使用:

  1. ispw,临时框设置为密码模式。

  2. isnum,临时框设置为数字模式,输入内容只能是数字。

  3. max[len],设置最大输入长度。len 为长度,0表示无限制。

  4. row[count],设置临时输入框的行数。

  5. fsize[size],设置字体大小,size 为字体 pointSize。

  6. font[名称],设置字体名称,字符串,可以用十六进制表示,如宋体,可以写成:0x5B8B0x4F53。

  7. hint[提示内容],设置临时框的提示语,如:请输入密码,同样支持用十六进制表示。

  8. done,临时框是否显示 “完成” 按钮,点击完成按钮,就会把临时框的内容输出到目标框,并且关闭键盘。

  9. show,显示临时框。

  10. hide,隐藏临时框。

  11. fix,强制显示临时框,设置一次以后每次打开键盘,临时框都会显示,直到进程结束。

  12. rect[x'y'w'h],设置目标框的位置与大小,由输入法自动判断是不是挡住了目标输入框,如挡住了才显示临时框,x,y 是 左上角坐标,w, h, 是宽度与高度。

  13. sync,显示时同步目标输入框的内容到临时框,完成输入的时候,临时框的内容会同步到目标框。

  14. padding[L,T,R,B],设置临时输入框的四边padding,参数分别是:L 左边,T 上边,R 右边, B 下边

例子:

  1. 直接显示临时框:inputbox(show)

  2. 直接显示临时框,并设置最大长度为10:inputbox(show,max[10])

  3. 同时设置最大长度与提示语:inputbox(show,max[10],hint[请输入密码])

  4. 设置目标输入框的位置与大小,让输入法自动判断是不是要显示临时框:inputbox(rect[10,10,200,200])

moveable(value)设置键盘是否可以移动。
  • moveable(0) - 不可移动

  • moveable(1) - 可以移动


showing键盘显示返回 true,以下结果都是 json 格式
getpath返回安装目录
getrect返回键盘的 Rect 即:左,上,右,下
getsize返回键盘的大小
getpos返回键盘的位置坐标
getleft返回键盘的X坐标
gettop返回键盘的Y坐标
getwidth返回键盘的宽度
getheight返回键盘的高度

签名图自定义传递方法

摘要:多文输入法签名功能,签名图传递方法

Windows有两种方式接收签名图:


  1. WM_COPY_DATA 消息,默认方式。参考help目录下的Demo。

  2. signSender.exe 插件。位置在:\bin\windows32_qt5.9.4[vs2015]\plugins\。默认带的插件也是通用 WM_COPY_DATA 消息传递,你可以重写这个插件,代码如下。

 

Linux只能重写 signSender插件。

位置:\bin\linux_xxx[xxx]\plugins\

代码如下:


#include <QCoreApplication>
#include <QUrl>
#if defined(Q_OS_WIN)
#include <windows.h>
#endif
  
  
int main(int argc, char * argv[])
{
    QCoreApplication a(argc, argv);
    QList<QString> arguments = QCoreApplication::arguments();
   
    // 调用:signSender.exe 参数1 参数2 参数3
    if (arguments.size() >= 3)
    {
        QString txt = QUrl::fromPercentEncoding(arguments[1].toLatin1());   // 参数1:签名识别结果,仅做参考。
        QString file = QUrl::fromPercentEncoding(arguments[2].toLatin1());  // 参数2:签名图完整路径
        QString orgTxt;
    
        // 参数3: 调用签名时传入的字符串,用途由开发者自己定义【可有可无】
        if (arguments.size() >= 4)
            orgTxt = QUrl::fromPercentEncoding(arguments[3].toLatin1());    
      
#if defined(Q_OS_WIN)
        // Windows 平台下,发消息完成传递,主程序要接收这个 WM_COPYDATA 消息
        DWORD dwResult;
        UINT uEvent = WM_COPYDATA;//RegisterWindowMessageW(L"dwime_sign_file");
        UINT uTimeout = 200;
        COPYDATASTRUCT   cds;
   
        QString data = txt + "\n" +
                file.replace("/", "\\") + "\n" +
                orgTxt;
   
        const ushort * dataW =  data.utf16();
   
        memset(&cds,0,sizeof(cds));
        cds.dwData   = 'sign';  // 0x7369676e
        cds.cbData   = sizeof(wchar_t) * (data.length() + 1);
        cds.lpData   = (void*)dataW;
   
        SendMessageTimeout(HWND_BROADCAST,
                           uEvent,
                           'sign', (LPARAM)&cds,
                           SMTO_ABORTIFHUNG, uTimeout, &dwResult);
#else
        // 其它平台,可以通过共享内存、共享文件、http、WEBSocket、或者QLocalServer 等方式传递
#endif
   
    }
   
    return 0;
}





其它开发语言资源(多文输入法SDK(无限版))网址:https://www.08i8.com/ttkfzy/detail83086.html;转载请注明!


提示:
1、资源共享网(www.08i8.com)其它开发语言资源《多文输入法SDK(无限版)》仅供研究学习请勿商用!
2、如果发现本资源违法或侵权请【报告管理员】
3、您所看到的所有资源都是网友分享,资源共享网(www.08i8.com)无法保证都能正常下载使用,
4、如果您发现资源无法下载或无法使用请【报告管理员】,管理员会联系资源发布者补充新资源!
5、如果暂时无法补充新资源,【只退积分!不退款!
6、关注微信公众号:《国资互联联盟》 不迷路!

标签 SDK 输入法

与《多文输入法SDK(无限版)》相关的《函数类库》


  • 腾讯社区开放平台C# SDK

    腾讯社区开放平台C# SDK

    腾讯社区开放平台是基于QQ空间、朋友社区(QQ校友)两大社交网络的开放平台。至今官方提供了一系列的开放接口(Open API)和开发工具包(SDK),开发者可以通过Open API获取登录用户信息、用户签名信息以及好友关系链信息等。已上线的应用还可以调用支付和监控接口,实现支付功能,查看应用实时运维数据。腾讯官方给出了不少的SDK,遗憾的是没有开放C#的SDK。我们DotNet开发者不能落后其它平...

    3 100979  0


  • ziyuan
    ziyuan Rank: 16

    0

    0

    0

    ( 此人很懒并没有留下什么~~ )
    img

    多文输入法SDK(无限版)

    下载积分 钻石会员
    5 免费
    请您 登录后 下载 !
    说明

    您下载所消耗的积分将转交上传作者。上传资源,免费获取积分!


    首页

    栏目

    搜索

    会员