Créer un fichier temp dans c:\windows\temp (heu si il existe deja po la peine de gueller dite le et j'le supprimeré)

Contenu du snippet

ba le titre é assez explicatif j'pens non ?? bon sa marche sous windows 98 apres ché po...ya p'tete meme surement + simple mé bon...c deja sa
pas de proje désolé g une pour inseré un fichier zip

Source / Exemple :


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

Conclusion :


po de bug en vue encor mé si vous en trouvé dite le...
pour le niveau chavé pas trop ou l'mettre dc g mit le 2

A voir également

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.