_WinAPI_WriteFile
Записывает данные в файл в позицию, определяемую указателем
#include <WinAPI.au3>
_WinAPI_WriteFile($hFile, $pBuffer, $iToWrite, ByRef $iWritten [, $pOverlapped = 0])
Параметры
$hFile | Дескриптор файла для записи |
$pBuffer |
Указатель на буфер, содержащий данные для записи |
$iToWrite |
Количество байт для записи в файл |
$iWritten |
Количество записанных байт |
$pOverlapped | [необязательный] Указатель на структуру $tagOVERLAPPED |
Возвращаемое значение
Успех: | Возвращает True |
Ошибка: | Возвращает False |
См. также
$tagOVERLAPPED, _WinAPI_CloseHandle, _WinAPI_CreateFile, _WinAPI_FlushFileBuffers, _WinAPI_GetFileSizeEx, _WinAPI_ReadFile, _WinAPI_SetEndOfFile, _WinAPI_SetFilePointerСм. также
Искать WriteFile в библиотеке MSDNПример
#include <WinAPI.au3>
Global $sFile, $hFile, $sText, $nBytes, $tBuffer
; 1) Создаёт файл и записывает данные в него
$sFile = @ScriptDir & '\test.txt'
$sText = 'abcdefghijklmnopqrstuvwxyz'
$tBuffer = DllStructCreate("byte[" & StringLen($sText) & "]")
DllStructSetData($tBuffer, 1, $sText)
$hFile = _WinAPI_CreateFile($sFile, 1)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), StringLen($sText), $nBytes)
_WinAPI_CloseHandle($hFile)
ConsoleWrite('1) ' & FileRead($sFile) & @CRLF)
; 2) Читает 6 байтов из позиции 3
$tBuffer = DllStructCreate("byte[6]")
$hFile = _WinAPI_CreateFile($sFile, 2, 2)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_ReadFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$sText = BinaryToString(DllStructGetData($tBuffer, 1))
ConsoleWrite('2) ' & $sText & @CRLF)
; 3) Записывает предыдущие прочитанные 6 байтов из позиции 3, в ту же позицию, но в верхнем регистре
DllStructSetData($tBuffer, 1, StringUpper($sText))
$hFile = _WinAPI_CreateFile($sFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 3)
_WinAPI_WriteFile($hFile, DllStructGetPtr($tBuffer), 6, $nBytes)
_WinAPI_CloseHandle($hFile)
$tBuffer = 0
ConsoleWrite('3) ' & FileRead($sFile) & @CRLF)
; 4) Обрезает размер файла до 12 байт
$hFile = _WinAPI_CreateFile($sFile, 2, 4)
_WinAPI_SetFilePointer($hFile, 12)
_WinAPI_SetEndOfFile($hFile)
_WinAPI_CloseHandle($hFile)
ConsoleWrite('4) ' & FileRead($sFile) & @CRLF)
FileDelete($sfile)