crawler009
Messages postés33Date d'inscriptionlundi 5 novembre 2007StatutMembreDernière intervention 2 avril 2008
-
1 avril 2008 à 09:36
crawler009
Messages postés33Date d'inscriptionlundi 5 novembre 2007StatutMembreDernière intervention 2 avril 2008
-
2 avril 2008 à 08:14
Bonjour,
Voila je cherche une fonction qui me permettrai de savoir si un fichier est ouvert sur le poste où l'application tourne.
J'ai trouvé ca :
Function IsFileOpen(ByVal strFic As String) As Boolean
Dim fic As Integer
On Error Resume Next
fic = FreeFile()
Open strFic For Input Access Read Lock Read Write As fic
If Err.Number = 0 Then
IsFileOpen = False
Close fic
Else
IsFileOpen = True
End If
End Function
Mais le problème c'est que cette fonction renvoi Vrai également si le fichier est ouvert par un autre utilisateur.
auriez-vous une solution ?
Merci !
A voir également:
Fichier en execution sur le poste de l'utilisateur
crawler009
Messages postés33Date d'inscriptionlundi 5 novembre 2007StatutMembreDernière intervention 2 avril 2008 2 avril 2008 à 08:14
Bon j'ai trouvé une solution.
J'ai trouvé une fonction sur ce site qui me permet de récupéré le Handle d'un fichier en fonction de son nom. Cette fonction cherche parmis les noms des fenetres actives. Elle renvoi 0 si le nom est introuvable.
**********
Public Function HwndFenetre(ByVal Texte As String) As Long
' Recherche le handle de la première fenêtre contenant
' le Texte dans le titre
Dim Titre As String, hWnd As Long, r As Long
' Handle du bureau
hWnd = GetDesktopWindow()
' Cherche la première fenêtre lui appartenant
hWnd = GetWindow(hWnd, GW_CHILD)
Do While hWnd <> 0
' Récupère le nom de la fenêtre
Titre = String(255, " ")
r = GetWindowText(hWnd, Titre, 255)
Titre = Left(Titre, r)
' Terminé si le nom correspond
If UCase(Titre) Like UCase("*" & Texte & "*") Then
HwndFenetre = hWnd
Exit Do
End If
' Sinon, cherche la fenêtre suivante
hWnd = GetWindow(hWnd, GW_HWNDNEXT)
DoEvents
Loop
End Function
**************
En combinant les fonctions IsFileOpen et HwndFenetre, on peut determiner si oui ou non un fichier a été lancé par un autre utilisateur.
NHenry
Messages postés15102Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention27 mars 2024159 1 avril 2008 à 13:38
Bonjour
C'est normal, si ta fonction ne parvient pas à ouvrir le fichier, elle te retourne True, donc si un autre utilisateur à ouvert le fichier, c'est la cas.
Nous captons le cockpit coupable qui a capoté
VB (6, .NET1&2), C++, C#.Net1
Mon site
crawler009
Messages postés33Date d'inscriptionlundi 5 novembre 2007StatutMembreDernière intervention 2 avril 2008 1 avril 2008 à 14:31
Ok merci.
Et y a t il un moyen de savoir si un fichier est ouvert sur son poste sans tester son ouverture ?
Mon application test des fichiers office (doc, xls, ppt) et egalement des pdf.