Merci pour cet article. C'était intéressant.
Bien que ModIcq soit parfaitement utilisable sans modification, il est plus facile de travailler avec la version modifiée :)
IcqMod.dll ne peut pas être utilisé directement dans MT5, car il fonctionne avec des chaînes Ansi, et dans MT5 les chaînes sont au format Unicode. Le projet a donc dû être remanié pour fonctionner avec des messages en Unicode (à cette fin, le protocole n'utilise pas le format binaire mais le format HTML). Maintenant, envoyez et recevez des messages dans toutes les langues du monde ! J'espère que le projet sera demandé, ce qui permettra de l'améliorer selon vos souhaits.
IcqMod.dll ne peut pas être utilisé directement dans MT5, car il fonctionne avec des chaînes Ansi, et dans MT5 les chaînes sont au format Unicode.
Ce n'est pas tout à fait le cas. Il est possible de les convertir en utilisant StringToCharArray. Par exemple, ce code fonctionne pour moi
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() { // convertir les chaînes de caractères en un tableau de caractères à transmettre à la dll uchar login[], password[], server[]; StringToCharArray("123456789", login); StringToCharArray("password", password); StringToCharArray("login.icq.com", server); // connecter ICQ_CLIENT client; ICQConnect(client, server, 5190, login, password, 0); for (;;) { uchar uinR[10], msgR[512]; int len = 0; // vérification des messages entrants ICQReadMsg(client, uinR, msgR, len); if (len > 0) { string uinStr = CharArrayToString(uinR), // UIN de l'expéditeur msgStr = CharArrayToString(msgR); // message uchar msgS[]; // ajouter avant le message Received : et renvoyer le message StringToCharArray("Reçu :" + msgStr, msgS); ICQSendMsg(client, uinR, msgS); } Sleep(100); } }
Mais il n'est pas pratique de convertir tout le temps, donc votre bibliothèque est beaucoup plus utilisable dans ce sens.
J'ai également pensé aux proxies. Peut-être qu'il y a des paramètres qui fonctionnent correctement pour une machine locale ? En d'autres termes, si nous n'utilisons pas de proxy, certains paramètres par défaut sont définis dans le proxy et tout fonctionne. En option, créer 2 fonctions Connect dans la bibliothèque - pour la variante avec et sans proxy
Les modifications apportées à la bibliothèque n'ont pas seulement affecté le type de la valeur passée pour les chaînes de caractères (char* est devenu wchar_t*). Ce serait trop simple. Le format du message transmis a changé (voir la fonction BuildQuery_SendMsg_Unicode dans le code source de la dll), qui est devenu universel (HTML) par opposition au format natif (binaire). Le fait que les caractères russes transmis par IcqMod soient reçus correctement est le mérite du programme ICQ natif sur lequel vous le testez. Essayez de tester la réception de messages russes sur http://wap.ebuddy.com/ ou un autre gestionnaire ICQ, et vous verrez des gribouillis au lieu du cyrillique. J'ai essayé une douzaine de gestionnaires ICQ sur lesquels mon projet fonctionne correctement, non seulement avec le cyrillique, mais aussi avec toutes les autres langues du monde. Désolé, bien sûr, pour la publicité.
A propos des proxys. J'ai testé, non pas en local, mais à distance, SOCK4/SOCK5. Je n'ai pas réussi à les faire fonctionner. C'est pourquoi j'ai décidé de ne pas les utiliser du tout dans le projet. Si nécessaire, j'essaierai de le faire.Je vous remercie ! C'était très clair.
Cela fait longtemps que je n'ai pas consulté ce fil de discussion. Mon icq_power.mqh ne compile pas, il dit *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.
Qu'est-ce que cela signifie ?
Cela fait longtemps que je n'ai pas consulté ce fil de discussion. Mon icq_power.mqh ne compile pas, il dit *2 Cpp compiler 02:50:00 MS Visual Studio compiler is not installed in the system or failed initialising the compiler*.
Qu'est-ce que cela signifie ?
Cela signifie que
le compilateur MS Visual Studio n'est pas installé dans le système
ou
n'a pas réussi à initialiser le compilateur
Qu'est-ce que cela signifie ?
Essayez de tester la réception de messages russes sur http://wap.ebuddy.com/ ou un autre gestionnaire ICQ, et vous verrez des gribouillis à la place du cyrillique. J'ai essayé une douzaine de gestionnaires ICQ, sur lesquels mon projet fonctionne correctement non seulement avec le cyrillique, mais aussi avec n'importe quelle autre langue du monde. Désolé, bien sûr, pour la publicité.
2 questions :
1) Est-ce qu'il fonctionne toujours sur les systèmes x32 (je n'ai pas eu l'occasion de le vérifier).
2) Personne n'a refait le design pour x64 ? (sous x64 ça ne marche pas).
Je vous serai très reconnaissant pour la réponse. J'ai essayé de le refaire - ça n'a pas marché - quand je travaille, ça plante.
2013.11.07 02:14:24 icq_demo (EURUSD.m,M1) Status_RECV_ERRORPS : J'ai besoin d'ICQ exactement...

- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Connexion de l'Expert Advisor avec ICQ en MQL5 a été publié :
Cet article décrit la méthode d'échange d'informations entre l'Expert Advisor et les utilisateurs d' ICQ, plusieurs exemples sont présentés. La documentation fournie sera intéressante pour ceux qui souhaitent recevoir des informations de trading à distance depuis un terminal client, via un client ICQ dans leur téléphone mobile ou PDA.
La figure 1. sert de démonstration du travail de l'Expert Advisor, qui permet l'échange de messages texte avec le client ICQ.
Auteur : Andrey Voytenko