Soyez le premier à donner votre avis sur cette source.
Snippet vu 4 493 fois - Téléchargée 38 fois
Option Explicit ' Récupérer le chemin du dossier temporaire Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long ' Créer un nom de fichier temporaire Declare Function GetTempFileName Lib "kernel32" Alias "GetTempFileNameA" (ByVal lpszPath As String, ByVal lpPrefixString As String, ByVal wUnique As Long, ByVal lpTempFileName As String) As Long ' Créer un fichier Public Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByRef lpSecurityAttributes As SECURITY_ATTRIBUTES, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long ' Fermer un fichier Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long ' Supprimer un fichier Public Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long Public Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type ' Valeur si il y a une erreur Public Const INVALID_HANDLE_VALUE = -1 ' bé d constante mé j'vé po tout expliké kan meme Public Const GENERIC_WRITE = &H40000000 Public Const GENERIC_READ = &H80000000 Public Const FILE_SHARE_READ = &H1 Public Const FILE_SHARE_WRITE = &H2 Public Const CREATE_NEW = 1 Public Const CREATE_ALWAYS = 2 Public Const OPEN_EXISTING = 3 Public Const OPEN_ALWAYS = 4 Public Const TRUNCATE_EXISTING = 5 Public Const FILE_ATTRIBUTE_ARCHIVE = &H20 Public Const FILE_ATTRIBUTE_COMPRESSED = &H800 Public Const FILE_ATTRIBUTE_NORMAL = &H80 Public Const FILE_ATTRIBUTE_HIDDEN = &H2 Public Const FILE_ATTRIBUTE_READONLY = &H1 Public Const FILE_ATTRIBUTE_SYSTEM = &H4 Public Const FILE_FLAG_WRITE_THROUGH = &H80000000 Public Const FILE_FLAG_OVERLAPPED = &H40000000 Public Const FILE_FLAG_NO_BUFFERING = &H20000000 Public Const FILE_FLAG_RANDOM_ACCESS = &H10000000 Public Const FILE_FLAG_SEQUENTIAL_SCAN = &H8000000 Public Const FILE_FLAG_DELETE_ON_CLOSE = &H4000000 Public Const FILE_FLAG_BACKUP_SEMANTICS = &H2000000 Public Const FILE_FLAG_POSIX_SEMANTICS = &H1000000 Public Function CréerFichierTemp(ByRef messErr As String, ByRef NomFichierTemp As String, ByRef HandleFichierTemp As Long, Optional FermerFichier As Boolean = True) As Boolean ' Créer un fichier temp dans le dossier temp de win ' messErr = message en cas d'erreur ' NomFichierTemp = nom du fichier .tmp ' HandleFichierTemp = handle du fichier .tmp ' FermerFichier = Fermer le fichier ou non On Error GoTo messErrTemp Static bufferLength As Long Static prefix As String * 3 ' préfixe du fichier temp (heu la on me la dit donc j'lé mit mais g po trop compris skeu c T Dim DossierTemp As String ' dossier temp Dim NomFichTemp As String ' fichier temp Dim SecurityAttribute As SECURITY_ATTRIBUTES Dim HandleFichTemp As Long ' handle fichier temp Dim HandleFich As Long ' handle fichier temp crée SecurityAttribute.nLength = Len(SecurityAttribute) SecurityAttribute.bInheritHandle = True SecurityAttribute.lpSecurityDescriptor = 0 bufferLength = 50 prefix = "CHM" DossierTemp = Space$(50) NomFichTemp = Space$(100) CréerFichierTemp = False ' récupération du dossier temp avec l'api GetTempPath If GetTempPath(bufferLength, DossierTemp) = 0 Then Form1.Print "Impossible de trouver le chemin du répertoire temporaire !" Exit Function End If If GetTempFileName(Mid$(DossierTemp, 1, InStrRev(DossierTemp, "\")), prefix, 0, NomFichTemp) = 0 Then messErr = "Impossible de créer le fichier temporaire." Exit Function End If NomFichTemp = Mid$(NomFichTemp, 1, InStrRev(NomFichTemp, ".tmp", , vbTextCompare) + 3) NomFichierTemp = NomFichTemp ' création du fichier HandleFich = CreateFile(NomFichTemp, 0, 0, SecurityAttribute, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, HandleFichTemp) If HandleFich = INVALID_HANDLE_VALUE Then messErr = "Impossible de créer le fichier temporaire." Exit Function End If HandleFichierTemp = HandleFich If FermerFichier Then ' fermeture du fichier If CloseHandle(HandleFich) <> 1 Then messErr = "Fermeture du fichier impossible. Handle : " & HandleFich Exit Function End If End If CréerFichierTemp = True Exit Function messErrTemp: messErr = "Erreur : " & Err.Description End Function
Commentaires
Investi plutôt dans un vrai clavier AlphaNumérique !! LOL
Je trouve ton code vraiment trop trop long
Ce serait pour pirater la nasa j'comprendrai, mais pour un fichier temp....lol
Je pense que nous faison parti d'une nouvelle époque de programmeur, ki utilise n'importe kel dossier comme dossier temporaire :-D
AInsi, par exemple,
Open "mon_fichier.tmp for output as #1
[...]
Close #1
Kill "mon_fichier.tmp" 'Nettoyage kan le bordel sert plu a rien
Voilà, c plus simple nan ? hu hu
La ptite chaussette
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.