C/C++调用Demo
<pre><code>#include &lt;iostream&gt;
using namespace std;
// 回调指针类型
typedef VOID(CALLBACK* ACCEPT)(DWORD);
typedef VOID(CALLBACK* RECEIVE)(DWORD, LPSTR, DWORD);
typedef VOID(CALLBACK* CLOSE)(DWORD);
// DLL导出函数
typedef DWORD(CALLBACK* InjectFn)(LPCSTR);
typedef BOOL(CALLBACK* InitFn)(ACCEPT, RECEIVE, CLOSE);
typedef BOOL(CALLBACK* SendFn)(DWORD, LPCSTR);
typedef BOOL(CALLBACK* VersionFn)(LPSTR);
typedef BOOL(CALLBACK* DestroyFn)();
#ifdef _UNICODE
HINSTANCE hModule = LoadLibrary(L&quot;WxLoader.dll&quot;);
#else
HINSTANCE hModule = LoadLibrary(&quot;WxLoader.dll&quot;);
#endif
InitFn InitWeChatSocket = (InitFn)GetProcAddress(hModule, &quot;InitWeChatSocket&quot;);
VersionFn GetUserWeChatVersion = (VersionFn)GetProcAddress(hModule, &quot;GetUserWeChatVersion&quot;);
InjectFn InjectWechat = (InjectFn)GetProcAddress(hModule, &quot;InjectWeChat&quot;);
DestroyFn DestroyWeChat = (DestroyFn)GetProcAddress(hModule, &quot;DestroyWeChat&quot;);
VOID CALLBACK receive(DWORD clientId, LPSTR data, DWORD len)
{
std::cout &lt;&lt; &quot;new message! &quot; &lt;&lt; data &lt;&lt; endl;
}
VOID CALLBACK accept(DWORD clientId)
{
std::cout &lt;&lt; &quot;new client! &quot; &lt;&lt; endl;
}
VOID CALLBACK close(DWORD clientId)
{
std::cout &lt;&lt; &quot;client closed! &quot; &lt;&lt; endl;
}
int _tmain(int argc, _TCHAR* argv[])
{
DWORD in = 0;
BOOL rs = FALSE;
char szVersion[30] = { 0 };
GetUserWeChatVersion(szVersion);
cout &lt;&lt; &quot;当前微信版本: &quot; &lt;&lt; szVersion &lt;&lt; endl;
rs = InitWeChatSocket(accept, receive, close);
std::cout &lt;&lt; &quot;初始化结果:&quot; &lt;&lt; rs &lt;&lt; endl;
in = InjectWechat(&quot;WeChatHelper.dll&quot;);
std::cout &lt;&lt; &quot;微信PID:&quot; &lt;&lt; in &lt;&lt; endl;
char ch;
while (true)
{
Sleep(500);
}
DestroyWeChat();
}</code></pre>