Fichier access est-il ouvert??

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 926 fois - Téléchargée 29 fois

Contenu du snippet

voila une astuce que j'utilise pour savoir
si un fichier access est ouvert pour un autre programme
(même si c'est sur un autre poste)

Source / Exemple :


Const FILE_SHARE_READ As Long = &H1
Const FILE_SHARE_WRITE As Long = &H2
Const GENERIC_WRITE As Long = &H40000000
Const GENERIC_READ As Long = &H80000000
Const FILE_ATTRIBUTE_NORMAL As Long = &H80
Const INVALID_HANDLE_VALUE As Long = -1

Const OPEN_EXISTING As Long = 3

Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, ByVal lpSecurityAttributes As Long, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long

Public Function IsFileOpen(ByVal NomFichier As String)
Dim hFile As Long, HFileRes  As Long
    
    hFile = CreateFile(NomFichier, GENERIC_READ Or GENERIC_WRITE, 0, 0, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0)
    HFileRes = (hFile = INVALID_HANDLE_VALUE)
    If Not HFileRes Then Call CloseHandle(hFile)
    IsFileOpen = HFileRes
End Function

Conclusion :


Ex:
If IsFileOpen("\\ordi\dossier\bd1.mdb") Then MsgBox "Le fichier est actuellement utilisé"

A voir également

Ajouter un commentaire Commentaires
Messages postés
26
Date d'inscription
jeudi 17 novembre 2005
Statut
Membre
Dernière intervention
9 juillet 2008

Private Declare Function CloseHandle Lib "Kernel32.dll" (ByVal Handle As Long) As Long
Messages postés
26
Date d'inscription
jeudi 17 novembre 2005
Statut
Membre
Dernière intervention
9 juillet 2008

Bonsoir,

la fonction CloseHandle(hFile) n'a pas été définie !
Messages postés
5
Date d'inscription
mercredi 18 décembre 2002
Statut
Membre
Dernière intervention
14 juin 2007

super Cool
mais comment faire pour savoir QUEL utilisateur utilise actuellement ce fichier ?
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
24
ATTENTION, certains progs utilisant un mdb dont le format est plus ancient que le Mdac présent sur le système laisseront le ldb sur le disque à la fermeture, on ne peut donc pas se fier à cette méthode.
Tenter l'obtention d'un handle exclusif par CreateFile est de loin plus sure.
Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
21
Comme ceci par exemple :

Public Function IsFileOpen(ByVal NomFichier As String)

NomFichier = Left$(NomFichier,Len(NomFichier)-3) & "ldb"

IsFileOpen=(Dir(NomFichier)<>"")
End Function
Afficher les 7 commentaires

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.