Ouvre le fichier qui correspond à l'identifiant d'objet spécifié
#include <WinAPIFiles.au3>
_WinAPI_OpenFileById ( $hFile, $vID [, $iAccess = 0 [, $iShare = 0 [, $iFlags = 0]]] )
$hFile | Le chemin ou le handle du fichier sur le volume ou le partage sur lequel le fichier à ouvrir est stocké. |
$vID | L'identifian de fichier (FileID), ou la structure $tagGUID (ObjectID), ou la représentation chaîne du GUID de la forme "{xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}" qui identifie le fichier à ouvrir. |
$iAccess | [optionnel] L'accès à l'objet. L'accès peut être en lecture, en écriture, ou les deux. Si ce paramètre est 0 (par défaut), l'application peut interroger les attributs de fichier et de périphérique sans accéder au périphérique. $GENERIC_READ $GENERIC_WRITE (Voir MSDN pour plus d'informations) |
$iShare | [optionnel] Le mode de partage de l'objet, qui peut être en lecture, en écriture, les deux ou aucun des deux. Si ce paramètre est 0 (par défaut) et si la fonction réussit, l'objet ne peut pas être partagé et ne peut pas être ouvert à nouveau jusqu'à ce que le handle soit fermé. $FILE_SHARE_DELETE $FILE_SHARE_READ $FILE_SHARE_WRITE |
$iFlags |
[optionnel] Les flags de fichier. Quand _WinAPI_OpenFileById() ouvre un fichier, il combine les flags de fichier avec les attributs de fichier, et ignore tous les attributs de fichier fournis. Ce paramètre peut inclure toute combinaison des valeurs suivantes: $FILE_FLAG_BACKUP_SEMANTICS $FILE_FLAG_NO_BUFFERING $FILE_FLAG_OPEN_NO_RECALL $FILE_FLAG_OPEN_REPARSE_POINT $FILE_FLAG_OVERLAPPED $FILE_FLAG_RANDOM_ACCESS $FILE_FLAG_SEQUENTIAL_SCAN $FILE_FLAG_WRITE_THROUGH |
Succès: | Retourne le handle du fichier spécifié. |
Échec: | Retourne 0 et définit @error <> 0, appelez _WinAPI_GetLastError() pour obtenir des informations supplémentaires sur l'erreur. |
Lorsqu'une application est terminé en utilisant le handle de l'objet retourné par cette fonction, utilisez la fonction _WinAPI_CloseHandle() pour fermer le handle. Ceci ne fait pas que libèrer les ressources système, mais peut avoir une influence plus large sur des choses comme le partage de fichier ou de périphérique et sur la validation des données sur le disque.
Cette fonction nécessite Windows Vista ou une version ultérieure.
Consultez OpenFileById dans la librairie MSDN.
#include <MsgBoxConstants.au3> #include <WinAPIConv.au3> #include <WinAPIFiles.au3> #include <WinAPIHObj.au3> #include <WinAPIShPath.au3> #include <WinAPISys.au3> If Number(_WinAPI_GetVersion()) < 6.0 Then MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Erreur', 'Requiert Windows Vista ou une version ultérieure.') Exit EndIf ; Crée un fichier temporaire Local $sFile = _WinAPI_GetTempFileName(@TempDir) ; Crée un unique ID d'objet pour le fichier Local $tGUID = _WinAPI_CreateObjectID($sFile) ConsoleWrite('GUID: ' & _WinAPI_StringFromGUID(DllStructGetPtr($tGUID)) & @CRLF) ; Ouvre le fichier par l'ID d'objet et récupère son chemin complet Local $hFile = _WinAPI_OpenFileById(_WinAPI_PathStripToRoot(@TempDir), $tGUID, 0, BitOR($FILE_SHARE_DELETE, $FILE_SHARE_READ, $FILE_SHARE_WRITE)) $sFile = _WinAPI_GetFinalPathNameByHandleEx($hFile) _WinAPI_CloseHandle($hFile) ConsoleWrite('Path: ' & StringRegExpReplace($sFile, '\\+.\\', '') & @CRLF) ; Supprime le fichier FileDelete($sFile)