• 新添加量子混沌系统板块,欢迎大家访问!---“量子混沌系统”
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏我们吧

通过MT4调用Windows API进行文件读写操作

使用教程 qchaos.009 6个月前 (11-12) 8807 复制链接

写过跟单的朋友都了解这块,就是通过调用Windows API,进行文件的读写。

当然,这个功能不仅限于写跟单EA,今天我把这个主要的函数分享出来,有兴趣的可以自行研究。

通过MT4调用Windows API进行文件读写操作

1. 导入Windows API函数

  • #import “kernel32.dll”
    int CreateDirectoryW(string directoryName,int type);
    int CreateFileW(string Filename, int AccessMode, int ShareMode, int PassAsZero, int CreationMode, int FlagsAndAttributes, int AlsoPassAsZero);
    int WriteFile(int FileHandle, string BufferPtr, int BufferLength, int &BytesWritten[], int PassAsZero);
    int ReadFile(int FileHandle, uchar &Buffer[], int BufferLength, int & BytesRead[], int PassAsZero);
    int CloseHandle(int FileHandle);
    int GetFileSize(int FileHandle, int PassAsZero);
    #import

这段代码导入了Windows kernel32.dll库中的文件操作相关函数。具体来说,导入的函数包括:

  • CreateDirectoryW:用于创建目录。
  • CreateFileW:用于打开文件。
  • WriteFile:用于向文件写入数据。
  • ReadFile:用于从文件读取数据。
  • CloseHandle:关闭文件句柄。
  • GetFileSize:获取文件大小。

 

2. 读文件操作(ReadFile)

  • string ReadFile(string Filename)
    {
    string strFileContents = “”;
    int h = CreateFileW(Filename, 0x80000000 /*GENERIC_READ*/, 3 /*SHARE READ|WRITE*/, 0, 3 /*OPEN_EXISTING*/, 0, 0);
    if (h == -1) {
    // Open failed
    } else {
    int sz = GetFileSize(h, 0);
    if (sz > 0) {
    uchar buffer[];
    ArrayResize(buffer, sz);
    int read[1];
    ReadFile(h, buffer, sz, read, 0);
    if (read[0] == sz)
    strFileContents = CharArrayToString(buffer, 0, read[0]);
    }
    }
    CloseHandle(h);
    return strFileContents;
    }

这段代码用于从指定的文件中读取内容:

  • CreateFileW:打开指定文件,设置文件访问模式为读取。
  • GetFileSize:获取文件的大小。
  • ReadFile:读取文件内容到一个缓冲区中。
  • CharArrayToString:将读取到的字节数组转换为字符串。
  • CloseHandle:关闭文件句柄。

     

3. 写文件操作(WriteFile)

  • void WriteFile(string filePath,string str)
    {
    int BytesWritten[1] = {0};
    uchar WriteBuffer[];
    StringToCharArray(str, WriteBuffer);
    int FileHandle = CreateFileW(FileName, 1073741824, 3, 0, 2, 0, 0);
    WriteFile(FileHandle,WriteBuffer,StringLen(str),BytesWritten,0);
    CloseHandle(FileHandle);
    }

这段代码用于向指定的文件写入内容:

  • StringToCharArray:将字符串转换为字符数组,以便写入文件。
  • CreateFileW:打开或创建文件,设置文件访问模式为写入。
  • WriteFile:将缓冲区内容写入文件。
  • CloseHandle:关闭文件句柄。

读文件:通过调用ReadFile函数,MT4可以从本地文件中读取内容,返回文件的内容作为字符串。

写文件:通过调用WriteFile函数,MT4可以将数据(字符串)写入指定的文件。


量子混沌 , 版权所有丨如未注明 , 均为原创
转载请注明原文链接:通过MT4调用Windows API进行文件读写操作