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++
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;
}
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

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 |
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
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