MT4调用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
/*读文件*/
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;
}
/*写文件*/
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);
}
原文地址:https://www.cnblogs.com/wzlmzy/p/4505938.html