Node.Js调用Demo
<p><code>该语言接口需单独付费,需要请联系我</code></p>
<p>DLL声明</p>
<p><code>说明: 针对node-ffi的特性,WxLoader.dll做了定制版本,有需要可以联系我</code></p>
<pre><code class="language-javascript">const ffi = require('ffi');
const path = require('path');
WxLoaderFile = path.resolve() '\\wxlib\\WxLoader.dll';
WeChatHelperFile = path.resolve() '\\wxlib\\WeChatHelper.dll';
let sWeChatHelperVersion = '2.6.8.51';
const WxLoader = ffi.Library(WxLoaderFile, {
'UseUtf8': ['bool', []],
'InitWeChatSocket': ['bool', [ 'pointer', 'pointer', 'pointer' ]],
'InjectWeChat': ['uint', ['string']],
'SendWeChatData': ['bool', ['uint', 'string']],
'GetUserWeChatVersion': ['bool', ['pointer']]
});
// 获取用户系统上安装的微信版本号
var wxVersionBuffer = Buffer.alloc(20,'\0','binary');
WxLoader.GetUserWeChatVersion(wxVersionBuffer);
var sWxVersion = wxVersionBuffer.toString('binary').replace(/\0 $/, '');
console.log('当前安装的微信版本号是:' sWxVersion ', 当前扩展支持的版本是:' sWeChatHelperVersion);
if (sWxVersion != sWeChatHelperVersion)
{
console.log('版本不符,程序将退出');
process.exit();
}
// 使用utf8编码
WxLoader.UseUtf8();
const InitWeChat = () =&gt; {
// 新客户端加入的回调
const ConnectCallback = ffi.Callback('void', ['int'],
(iClientId) =&gt; {
console.log('ConnectCallback: ' iClientId);
}
);
// 客户端退出回调
const CloseCallback = ffi.Callback('void', ['int'],
(iClientId) =&gt; {
console.log('CloseCallback: ' iClientId);
}
);
// 接收消息回调
const RecvCallback = ffi.Callback('void', ['int', 'string', 'int'],
(iClientId, data, dataSize) =&gt; {
console.log('RecvData: ' data);
var jsonData = JSON.parse(data);
if (jsonData.type == 11025)
{
console.log('微信登录成功!');
setTimeout(function(){
var msgData = {
'type': 11036,
'data': {
'to_wxid': 'filehelper',
'content': '该消息来自Node.Js'
}
};
// 发送文本消息
WxLoader.SendWeChatData(iClientId, JSON.stringify(msgData));
}, 1000);
}
}
);
// 使用闭包初始化接口
return () =&gt; {
console.log('InitWeChatSocket');
WxLoader.InitWeChatSocket(ConnectCallback, RecvCallback, CloseCallback);
}
}
// 初始化接口
InitWeChat()();
// 智能多开微信
let result = WxLoader.InjectWeChat(WeChatHelperFile);
console.log('微信进程号: ' result);
// 解决阻塞问题
(async () =&gt; {
setInterval(() =&gt; {
//console.log('=====');
}, 60);
while (true) {
await new Promise(resolve =&gt; {
setImmediate(() =&gt; {
// 一些处理
resolve();
});
});
}
})();</code></pre>