Auftrag beendet
Ausführungszeit 13 Stunden
![](https://c.mql5.com/i/avatar/avatar_na2.png)
Bewertung des Kunden
Работа выполнена быстро и качественно. Рекомендую!
Spezifikation
Добрый день! Нужно переписать две функции с mql4 на mql5.
Первая функция для отправки данных на сайт:
//+------------------------------------------------------------------+ //| InetFunction.mq4 | //| Copyright © 2011, XrustSolution. | //| mail: [email]xrustx@gmail.com[/email] | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Defines | //+------------------------------------------------------------------+ #define HTTP_QUERY_CONTENT_LENGTH 0x00000005 #define HTTP_QUERY_FLAG_NUMBER 0x20000000 //---- #define INTERNET_OPEN_TYPE_DIRECT 0 #define INTERNET_OPEN_TYPE_PRECONFIG 0x00000000 // use registry configuration #define INTERNET_FLAG_RELOAD 0x80000000 #define INTERNET_FLAG_NO_CACHE_WRITE 0x04000000 #define INTERNET_FLAG_PRAGMA_NOCACHE 0x00000100 //---- #define AGENT "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; Q312461)" //+------------------------------------------------------------------+ //| Export Function from WINAPI | //+------------------------------------------------------------------+ #import "wininet.dll" int InternetAttemptConnect (int x); int InternetOpenA ( string sAgent, int lAccessType, string sProxyName, string sProxyBypass, int lFlags ); int InternetOpenUrlA ( int hInternetSession, string sUrl, string sHeaders, int lHeadersLength, int lFlags, int lContext ); int InternetReadFile ( int hFile, int& lpvBuffer[], int lNumBytesToRead, int& lNumberOfBytesRead[] ); int InternetCloseHandle ( int hInet ); int InternetQueryDataAvailable ( int hFile, int& lpdwNumberOfBytesAvailable[], int dwFlags, int dwContext ); int HttpQueryInfoA ( int hRequest, int dwInfoLevel, int& lpvBuffer[], int& lpdwBufferLength[], int& lpdwReserved[] ); //+------------------------------------------------------------------+ //| Function : InetToString | //| Copyright © 2010, XrustSolution. | //| mail: xrustx@gmail.com | //+------------------------------------------------------------------+ int InetToString(string fUrl, string &out) { Print("URL :",fUrl); Print("IN DATA",out); if(!IsDllsAllowed()){ Alert("Must be configured to allow the use of DLL"); return(1001); } int rv = InternetAttemptConnect(0); if(rv != 0){ Print("Error when calling InternetAttemptConnect ()"); return(1002); } int hSession = InternetOpenA(AGENT, INTERNET_OPEN_TYPE_DIRECT, "0", "0", 0); if(hSession <= 0){ Print("Error when calling InternetOpenA()"); return(1003); } int hReq = InternetOpenUrlA(hSession, fUrl, "0", 0, INTERNET_FLAG_NO_CACHE_WRITE | INTERNET_FLAG_PRAGMA_NOCACHE | INTERNET_FLAG_RELOAD, 0 ); if(hReq <= 0){ Print("Error when calling InternetOpenUrlA()"); InternetCloseHandle(hSession); return(1004); } int cBuffer[256]; ArrayInitialize(cBuffer,0); int dwBytesRead[1]; ArrayInitialize(dwBytesRead,0); string TXT = ""; while(!IsStopped()){ bool bResult = InternetReadFile(hReq, cBuffer, 1024, dwBytesRead); if(dwBytesRead[0] == 0)break; string text = ""; for(int i = 0; i < 256; i++){ text = text + CharToStr(cBuffer[i] & 0x000000FF); if(StringLen(text) == dwBytesRead[0])break; text = text + CharToStr(cBuffer[i] >> 8 & 0x000000FF); if(StringLen(text) == dwBytesRead[0])break; text = text + CharToStr(cBuffer[i] >> 16 & 0x000000FF); if(StringLen(text) == dwBytesRead[0])break; text = text + CharToStr(cBuffer[i] >> 24 & 0x000000FF); if(StringLen(text) == dwBytesRead[0])break; } TXT = TXT + text; Sleep(1); } if(StringFind(TXT,"<html>",0)>=0||StringFind(TXT,"<HTML>",0)>=0||StringFind(TXT,"<title>",0)>=0||StringFind(TXT,"<head>",0)>=0){ if(StringFind(TXT,">404",0)>=0){return(404);} } out = TXT; InternetCloseHandle(hReq); InternetCloseHandle(hSession); //Print("ServerAnswer:",out); return(0); }
И вторая функция для перелогина счетов в МТ4, ее тоже нужно переписать на MQL5, если это возможно.
#import "user32.dll" int GetParent( int hWnd ); int GetDlgItem( int hDlg, int nIDDlgItem ); int GetLastActivePopup( int hWnd ); #import #define VK_HOME 0x24 #define VK_DOWN 0x28 #define VK_ENTER 0x0D extern int Amount = 64; // Количество счетов в закладке Избранное окна Навигатор extern int Pause = 30; // Пауза между переключениями торговых счетов int start() { int i; Pause *= 1000; for (i = 1; i <= Amount; i++) { Login(i); Sleep(Pause); //здесь остальной код } return(0); } //+------------------------------------------------------------------+ //| Подключается к счету, расположенному в строчке номер Num | //| в закладке Избранное окна Навигатор | //+------------------------------------------------------------------+ void Login( int Num ) { int hwnd = WindowHandle(Symbol(), Period()); int hwnd_parent = 0; while (!IsStopped()) { hwnd = GetParent(hwnd); if (hwnd == 0) break; hwnd_parent = hwnd; } if (hwnd_parent != 0) // нашли главное окно { hwnd = GetDlgItem(hwnd_parent, 0xE81C); // нашли Избранное окна Навигатор hwnd = GetDlgItem(hwnd, 0x52); hwnd = GetDlgItem(hwnd, 0x8A70); PostMessageA(hwnd, WM_KEYDOWN, VK_HOME,0); // верхняя строчка закладки Избранное окна Навигатор while (Num > 1) { PostMessageA(hwnd, WM_KEYDOWN,VK_DOWN, 0); // сместились на нужную строчку Num--; } PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); // логин Sleep(1000); // выждали hwnd = GetLastActivePopup(hwnd_parent); // нашли форму логина PostMessageA(hwnd, WM_KEYDOWN, VK_ENTER, 0); // залогинились } return; }
В профиле на счету пока что есть только 5$ начисленных сайтом, после выполнения задания пополню счет и рассчитаюсь за работу.
Bewerbungen
1
Bewertung
Projekte
620
38%
Schlichtung
39
23%
/
64%
Frist nicht eingehalten
93
15%
Frei
2
Bewertung
Projekte
140
46%
Schlichtung
19
42%
/
16%
Frist nicht eingehalten
32
23%
Frei
Projektdetails
Budget
10 - 50 USD
Für die Entwickler
9
- 45
USD
Ausführungsfristen
von 2 bis 15 Tag(e)