DLL接口使用
<p><strong>DLL接口</strong></p>
<p>DLL有两个<code>WxLoader.dll</code>和<code>WeChatHelper.dll</code></p>
<p><strong>DLL文件说明:</strong> </p>
<table>
<thead>
<tr>
<th style="text-align: left;">文件名</th>
<th style="text-align: left;">说明</th>
</tr>
</thead>
<tbody>
<tr>
<td style="text-align: left;">WxLoader.dll</td>
<td style="text-align: left;">管理端,用于多开微信和与微信交互</td>
</tr>
<tr>
<td style="text-align: left;">WeChatHelper.dll</td>
<td style="text-align: left;">客户端,用于注入微信内部,接收指令并发送数据给管理端</td>
</tr>
</tbody>
</table>
<p><code>WeChatHelper.dll可以以微信版本号做为名称,先使用GetUserWeChatVersion函数获取用户电脑上的微信版本,判断是否支持,如果支持,使用InjectWeChat注入dll</code></p>
<p><strong>WxLoader.dll的导出函数:</strong></p>
<ol>
<li>
<p>InitWeChatSocket
<code>用于socket的回调处理</code>
函数原型:
<code>BOOL __stdcall InitWeChatSocket(IN DWORD dwConnectCallback, IN DWORD dwRecvCallback, IN DWORD dwCloseCallback)</code>
其中dwConnectCallback是一个函数指针类型, 在有新客户端加入时调用,结构如下:
<code>void __stdcall MyConnectCallback(int iClientId)</code> 传入的一个参数是socket的客户ID,返回值为空
dwRecvCallback是一个函数指针类型,在接收到新消息时调用,结构如下:
<code>void __stdcall MyRecvCallback(int iClientId, char* szJsonData, int iLen)</code>
dwCloseCallback是一个函数指针类型,在客户端退出时调用,结果如下:
<code>void __stdcall MyCloseCallback(int iClientId)</code></p>
</li>
<li>
<p>GetUserWeChatVersion
<code>获取当前用户的电脑上安装的微信版本,如: 2.6.7.57</code>
函数原型:
<code>BOOL __stdcall GetUserWeChatVersion(OUT LPSTR szVersion);</code>
传一个ANSI字符串缓冲区的指针,长度30即可, 这个函数可以先获取当前用户电脑上安装的微信版本,然后判断我们的dll是否支持,如果不支持就提示用户下载我们支持的版本。</p>
</li>
<li>
<p>InjectWeChat
<code>用于智能多开,并注入dll, 注入成功返回微信的进程ID, 失败返回0</code>
函数原型:
<code>DWORD __stdcall InjectWeChat(IN LPCSTR szDllPath);</code>
如果需要一个软件,管理多个微信,多次调用这个函数实现,通过socket回调管理客户端</p>
</li>
<li>
<p>SendWeChatData
用于向微信发送指令,指令内容参考功能类,·
函数原型:
<code>BOOL __stdcall SendWeChatData(IN CONNID dwClientId, IN LPCSTR szJsonData);</code></p>
</li>
<li>
<p>DestroyWeChat
<code>主程序退出前,执行释放函数,用于卸载DLL和关闭socket服务端</code>
函数原型:
<code>BOOL __stdcall DestroyWeChat();</code></p>
</li>
<li>
<p>UseUtf8
<code>在所有接口前执行,执行后接口全部使用utf8编码传输</code>
函数原型:
<code>BOOL __stdcall UseUtf8();</code></p>
</li>
<li>InjectWeChat2
<code>用于智能多开,跟InjectWeChat功能相同,多了一个参数传递指定微信路程,并注入dll, 注入成功返回微信的进程ID, 失败返回0</code>
函数原型:
<code>DWORD __stdcall InjectWeChat(IN LPCSTR szDllPath, IN LPCSTR szWeChatExePath);</code>
如果需要一个软件,管理多个微信,多次调用这个函数实现,通过socket回调管理客户端</li>
</ol>