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é)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 478 fois - Téléchargée 38 fois

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

Ajouter un commentaire

Commentaires

spy_EIT
Messages postés
19
Date d'inscription
mardi 6 juillet 2004
Statut
Membre
Dernière intervention
9 novembre 2007
-
A quoi bon "gagner du temps" en écrivant comme un porc si c'est pour se taper 4 pages de code dès que t'as besoins d'un Temp ?????????????

Investi plutôt dans un vrai clavier AlphaNumérique !! LOL
leptidev
Messages postés
206
Date d'inscription
mercredi 30 janvier 2002
Statut
Membre
Dernière intervention
4 décembre 2007
-
Mais c koi ça !!!!!!!!!! 100 lignes pour créer un fichier bravo, record battue !!!! FileSystemObject vous connaissez pas ???? Scriping Run Time non plus donc ?

Je trouve ton code vraiment trop trop long
VirtualReckless
Messages postés
12
Date d'inscription
jeudi 31 octobre 2002
Statut
Membre
Dernière intervention
14 novembre 2002
-
je c'est tres bien que c'est long mais le dit satandemon c interessant pour lé api
SATANdemon
Messages postés
44
Date d'inscription
mardi 18 décembre 2001
Statut
Membre
Dernière intervention
30 novembre 2005
-
tres interessant pour les api, mais compliquer pour du temporaire :)
cs_Cho7Kipu
Messages postés
31
Date d'inscription
samedi 9 novembre 2002
Statut
Membre
Dernière intervention
20 octobre 2003
-
J'avoue c un peu long comme code.. mdr
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.