感谢您的文章。这很有趣。
虽然 ModIcq 在不修改的情况下也完全可以使用,但使用修改后的版本会更方便:)
IcqMod.dll 无法在 MT5 中直接使用,因为它使用的是 Ansi 字符串,而 MT5 中的字符串是 Unicode 格式。
不完全是这样。可以使用StringToCharArray 进行 转换。例如,我可以使用以下代码
struct ICQ_CLIENT { uchar status; ushort sequence; ulong sock; }; #import "IcqMod.dll" ulong ICQConnect(ICQ_CLIENT& client, uchar& host[], ushort port, uchar& login[], uchar& pass[], int proxy); void ICQClose(ICQ_CLIENT& client); ulong ICQSendMsg(ICQ_CLIENT& client, uchar& uin[], uchar& message[]); ulong ICQReadMsg(ICQ_CLIENT& client, uchar& uin[], uchar& msg[], int& msglen); #import void OnStart() { // 将字符串转换成字符数组,然后传递给 dll uchar login[], password[], server[]; StringToCharArray("123456789", login); StringToCharArray("password", password); StringToCharArray("login.icq.com", server); // 连接 ICQ_CLIENT client; ICQConnect(client, server, 5190, login, password, 0); for (;;) { uchar uinR[10], msgR[512]; int len = 0; // 检查收到的信息 ICQReadMsg(client, uinR, msgR, len); if (len > 0) { string uinStr = CharArrayToString(uinR), // 发件人的 UIN msgStr = CharArrayToString(msgR); // 信息 uchar msgS[]; // 在信息 "收到:"之前添加 "并将其发送回去 StringToCharArray("收到:" + msgStr, msgS); ICQSendMsg(client, uinR, msgS); } Sleep(100); } }
但一直转换很不方便,因此您的库在这个意义上更实用。
我还想到了代理。也许有一些设置可以在本地机器上正常工作?也就是说,如果我们不使用代理,那么在代理中设置一些默认设置就可以了。作为一种选择,在库中创建 2 个连接函数,分别用于有代理和无代理的变体
库中所做的更改不仅影响了字符串的传递值类型(从 char* 变为 wchar_t*),而且还影响了字符串的转换。这就太简单了。传输的信息格式也发生了变化(参见 dll 源代码中的 BuildQuery_SendMsg_Unicode 函数),从本地格式(二进制)变成了通用格式(HTML)。通过 IcqMod 发送的俄语文字信息能被正确接收,这是您正在测试的本地 ICQ 程序的功劳。试着在http://wap.ebuddy.com/ 或其他 ICQ 管理器上测试俄语信息的接收,你会看到潦草的字迹而不是西里尔字母。我已经试过十几种 ICQ 管理器,在这些管理器上,我的项目不仅能正确使用西里尔文,而且能正确使用世界上任何其他语言。当然,对不起,我是在做广告。
关于代理。我测试过,但不是本地的,而是远程的 SOCK4/SOCK5。我无法使用它们。所以我决定在项目中完全不使用它们。如果有必要,我会尝试使用。谢谢!说得很清楚。
我很久没有访问这个主题了。我的 icq_power.mqh 无法编译,提示 *2 Cpp 编译器 02:50:00 MSVisual Studio 编译器未安装在系统中或初始化编译器失败*。
这是什么意思?
我很久没有访问这个主题了。我的 icq_power.mqh 无法编译,提示 *2 Cpp 编译器 02:50:00 MS Visual Studio 编译器未安装在系统中或初始化编译器失败*。
这意味着什么?
这意味着
系统中未安装 MSVisual Studio 编译器
或
编译器初始化失败
这意味着什么?
如果您尝试在http://wap.ebuddy.com/ 或其他 ICQ 管理器上测试俄语信息的接收效果,您将看到潦草的字迹而不是西里尔字母。我已经尝试了十几种 ICQ 管理器,在这些管理器上,我的项目不仅能正确使用西里尔文,还能正确使用世界上任何其他语言。当然,很抱歉,这是在做广告。
有两个问题:
1)它还能在 x32 系统上运行吗? 我没有机会检查)。
2)没有人重新设计过 x64 系统吗?
如蒙回答,我将不胜感激。我试着重新制作它 - 但没有成功 - 当我工作时,它崩溃了
2013.11.07 02:14:24 icq_demo (EURUSD.m,M1) Status_RECV_ERRORPS:需要准确的 ICQ...
新文章 用 MQL5 连接 EA 交易程序和 ICQ已发布:
本文描述 EA 交易程序和 ICQ 用户之间的信息交换方法,并提供了几个例子。通过他们的手机或 PDA 中的 ICQ 客户端,从一个客户端远程接收交易信息的人会对提供的材料感兴趣。
作者:Andrey Voytenko