Crée ou ouvre un fichier ou un autre périphérique
#include <WinAPIFiles.au3>
_WinAPI_CreateFile ( $sFileName, $iCreation [, $iAccess = 4 [, $iShare = 0 [, $iAttributes = 0 [, $tSecurity = 0]]]] )
$sFileName | Nom de l'objet à créer ou ouvrir |
$iCreation | Action à entreprendre sur les fichiers qui existent et n'existent pas : 0 - Crée un nouveau fichier. La fonction échoue si le fichier existe 1 - Crée un nouveau fichier. Si un fichier existe, il est écrasé 2 - Ouvre un fichier. La fonction échoue si le fichier n'existe pas 3 - Ouvre un fichier. Si le fichier n'existe pas, la fonction crée le fichier 4 - Ouvre un fichier et supprime son contenu pour que sa taille soit 0 octet. La fonction échoue si le fichier n'existe pas. |
$iAccess | [optionnel] Type d'accès à l'objet : 1 - Exécution 2 - Lecture 4 - Écriture |
$iShare | [optionnel] Mode de partage d'un objet : 1 - Suppression 2 - Lecture 4 - Écriture |
$iAttributes | [optionnel] Les attributs du fichier: 1 - Le fichier doit être archivé 2 - Le fichier est caché 4 - Le fichier est en lecture seule 8 - Dossier fait partie du système d'exploitation ou est utilisé exclusivement par lui. |
$tSecurity | [optionnel] Structure $tagSECURITY_ATTRIBUTES (ou un pointeur sur une telle structure) pour déterminer si le handle retourné peut être hérité par les processus enfants. Si $tSecurity est 0, le handle ne peut pas être héritée. |
Succès: | Retourne le handle ouvert du fichier spécifié |
Échec: | Retourne 0, appelez _WinAPI_GetLastError() pour obtenir des informations sur l'erreur |
$tagSECURITY_ATTRIBUTES, _WinAPI_CloseHandle, _WinAPI_FlushFileBuffers, _WinAPI_GetFileSizeEx, _WinAPI_ReadFile, _WinAPI_SetEndOfFile, _WinAPI_SetFilePointer, _WinAPI_WriteFile
Consultez CreateFile dans la librairie MSDN.
#include <WinAPIFiles.au3> #include <WinAPIHObj.au3> Local $sFile, $hFile, $sText, $nBytes, $tBuffer ; 1) Crée un fichier et écrit des données $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) Lit 6 octets à partir de la position 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) Ecrit les 6 octets déjà lus à la position 3 à la même position, mais en majuscules 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) Tronque la taille du fichier à 12 octets $hFile = _WinAPI_CreateFile($sFile, 2, 4) _WinAPI_SetFilePointer($hFile, 12) _WinAPI_SetEndOfFile($hFile) _WinAPI_CloseHandle($hFile) ConsoleWrite('4) '& FileRead($sFile) & @CRLF) FileDelete($sFile)