Private Declare Function DeleteFile Lib "kernel32" Alias "DeleteFileA" (ByVal lpFileName As String) As Long Private 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 Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long Function GetUniqueTempFileName(Optional ByVal bCreate As Boolean = True) As String Dim sBuffer As String sBuffer = String$(260, vbNullChar) ' aucune raison qu'on obtienne pas le chemin réel par API mais bon au pire on peut tenter par ENVIRON If GetTempPath(Len(sBuffer), sBuffer) Then ' enlève les NULL GetUniqueTempFileName = LeftB$(sBuffer, InStrB(1, sBuffer, vbNullChar)) Else GetUniqueTempFileName = Environ$("TEMP") End If ' ajoute le slash, la fonction sera alors prête à retourner le "X:\RéPERTOIRE_TEMP\" If Not (RightB$(GetUniqueTempFileName, 2) = "\") Then GetUniqueTempFileName = GetUniqueTempFileName & "\" ' on va générer un nom temporaire de fichier temporaire sBuffer = String$(260, vbNullChar) Call GetTempFileName(GetUniqueTempFileName, App.EXEName, 0&, sBuffer) sBuffer = LeftB$(sBuffer, InStrB(1, sBuffer, vbNullChar)) ' retour GetUniqueTempFileName = sBuffer ' l'API a créé le fichier, on supprime si nécessaire If Not bCreate Then Call DeleteFile(sBuffer) End Function
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.