Ciao ha tutti ho una domanda per i piu esperti vorrei scambiare dei dati da una applicazione scritta in C++ --> to MT4 , devo usare il memory mapped file , ho creato dall' esempio MSDN microsoft il primo script che va a scrivere nella memoria una semplice stringa , riporto di seguito il codice C++
fatto questo e verificato con il secondo script C++ che tutto funzioni (e tutto funziona ) , ho provato a scrivere uno script in mql4, ma trovo delle difficolta riporto il codice
in pratica mi ritorna sempre handle=0 , ho provato ad usare una classe diversa per vedere , se avessi capito "bene " come si usa gli import , ho provato con il Beep , ed effettivamente il Beep mi beeppava , ma se provo ad aprire l OpenfilemappingA , niente , ora la domanda e' :,E' possibile che mql4 disabiliti in qualche modo questo tipo di funzione ??, oppure dove sbaglio ? (ipotesi molto piu plausibile),ho provato anche con una Dll custom che va ad aprire OpenFilemapp..... A ma nulla ritorna sempre 0 l handle , qualcuno piu esperto , puo' mica darmi una dritta , grazie a tutti in anticipo
HTML Code:
#include <windows.h> #include <stdio.h> #include <conio.h> #include <tchar.h> #define BUF_SIZE 4096 TCHAR szName[] = TEXT("MyFileMappingObject"); TCHAR szMsg[] = TEXT("Message from first process."); int _tmain() { HANDLE hMapFile; LPCTSTR pBuf; hMapFile = CreateFileMapping( INVALID_HANDLE_VALUE, // use paging file NULL, // default security PAGE_READWRITE, // read/write access 0, // maximum object size (high-order DWORD) BUF_SIZE, // maximum object size (low-order DWORD) szName); // name of mapping object if (hMapFile == NULL) { _tprintf(TEXT("Could not create file mapping object (%d).\n"), GetLastError()); return 1; } pBuf = (LPTSTR)MapViewOfFile(hMapFile, // handle to map object FILE_MAP_ALL_ACCESS, // read/write permission 0, 0, BUF_SIZE); if (pBuf == NULL) { _tprintf(TEXT("Could not map view of file (%d).\n"), GetLastError()); CloseHandle(hMapFile); return 1; } CopyMemory((PVOID)pBuf, szMsg, (_tcslen(szMsg) * sizeof(TCHAR))); _getch(); UnmapViewOfFile(pBuf); CloseHandle(hMapFile); return 0; }
HTML Code:
//+------------------------------------------------------------------+ //| Standard Deviation.mq4 | //| Copyright © 2005, MetaQuotes Software Corp. | //| http://www.metaquotes.net/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, MetaQuotes Software Corp." #property link "http://www.metaquotes.net/" #property indicator_separate_window #property indicator_minimum 0 #property indicator_buffers 1 #property indicator_color1 Blue #define FILE_MAP_READ 4 #define BUF_SIZE 4096 extern string szName = "MyFileMappingObject"; //extern string szName = "Global\\MyFileMappingObject"; int handle = 0; string Data; #import "kernel32.dll" int OpenFileMappingA(int dwDesiredAccess, bool bInheritHandle, string lpName); string MapViewOfFile(int hFileMappingObject, int dwDesiredAccess, int dwFileOffsetHigh, int dwFileOffsetLow, int dwNumberOfBytestoMap); int CloseHandle( int handle); int UnmapViewOfFile(string lpBaseAddress); bool Beep(int dwFreq, int dwDuration); #import //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ int start() { handle = OpenFileMappingA(FILE_MAP_READ, FALSE, szName); if(handle == 0) { Alert("Could not open file mapping object", GetLastError()); } else { Data = MapViewOfFile(handle, FILE_MAP_READ, 0, 0, BUF_SIZE); Alert(Data); UnmapViewOfFile(Data); CloseHandle(handle); } return (0); } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { return(0); } //+------------------------------------------------------------------+ //| Standard Deviation | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+