Announcement

Collapse
No announcement yet.

Memory mapped file in Mql4 Help

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Memory mapped file in Mql4 Help

    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
Working...
X