Vérifier si BlocNote ouvert ou fermé

xhudi69

XLDnaute Accro
Bonjour à toutes et à tous,

J'ai un BlocNote situé sur un serveur et j'aimerais savoir si il est ouvert ou fermé (peu importe qui l'utilise, là n'est pas la question).

Mes recherches sur le net n'ont rien donné si ce n'est des codes qui ne fonctionnent pas chez moi.

Merci à vous pour un bout de code ou une piste.......

@+ :cool:
 

xhudi69

XLDnaute Accro
Re : Vérifier si BlocNote ouvert ou fermé

Bonsoir à toutes et à tous

Grand merci à toi job75 pour tes codes que je vais tester demain au travail. :)

Camarchepas, merci pour ton implication, je vais tester demain aussi.

Une précision s'impose, ce BlocNote est là pour donner l'autorisation d'aller modifier un ficher source, donc se code me servira à ce qu'il y ait un test d'ouverture ou de fermeture avant d'aller lire et éventuellement modifier le BlocNote.
C'est le principe du premier arrivé premier servit.

Aujourd'hui, j'ai essayé le code de PM02 modifier par David84, mais je n'ai pas encore le nom du serveur, demain je l'aurais et vous ferais par de mes résultats.

Merci à vous tous et à demain.

@+ :cool:
 

david84

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Bonjour,
Pour tester si le bloc-notes est ouvert via WMI ce code suffit :
Code:
Sub Notepad()
Dim objWMIService As Object
Dim colItems As Object

Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_Process WHERE Name = 'notepad.exe'")

If colItems.Count > 0 Then MsgBox "Le Bloc-notes est ouvert" Else MsgBox "Le Bloc-notes n'est pas ouvert"
End Sub
Après on peut récupérer le nombre d'instances ouvertes, le chemin des fichiers, etc. comme précisé dans les propositions antérieures.
A+
 

xhudi69

XLDnaute Accro
Re : Vérifier si BlocNote ouvert ou fermé

Bonjour à toutes et à tous

@david84:
j'ai une erreur Automation sur la ligne:
Code:
Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & "SRVSBS2" & "\root\cimv2")

Je continue de chercher...

@+ :cool:
 

job75

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Bonjour xhudi69, David, le forum,

Avec mon fichier (2) des petits malins peuvent quitter Excel par le Gestionnaire des tâches sans fermer les fenêtres "Bonjour".

Et ensuite modifier et enregistrer l'une des fenêtres pour embêter le monde :rolleyes:

Alors niquons-les avec un fichier provisoire "µµµ" :

Edit : merci camarchepas pour le Like mais l'alternative que je proposais n'évitait pas ce problème.

J'annule donc.

A+
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Re,

L'idée du dossier provisoire n'est pas mauvaise, il faut simplement lui donner le nom de l'ordi (normalement unique).

Et l'on n'a même plus besoin d'utiliser l'API FindWindow :

Code:
Private Sub Workbook_Open()
If Me.ReadOnly Then
  MsgBox "Le fichier est occupé..."
  Me.Saved = True
  If Workbooks.Count = 1 Then Application.Quit Else Me.Close
Else
  serveur = ThisWorkbook.Path & "\" 'pour tester, à adapter
  nom = "Bonjour" 'à adapter
  dossier = serveur & Environ("ComputerName") & "\" 'dossier provisoire
  On Error Resume Next
  MkDir dossier
  CreateObject("Scripting.FileSystemObject") _
    .copyfile serveur & nom & ".txt", dossier
End If
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If Me.ReadOnly Then Exit Sub
On Error Resume Next
With CreateObject("Scripting.FileSystemObject")
  .copyfile dossier & nom & ".txt", serveur
  .getfolder(dossier).Delete 'suppression du dossier provisoire
End With
If Not Me.Saved Then Me.Save
End Sub
Les variables serveur nom dossier sont déclarées Public dans le Module1.

Fichiers (3).

A+
 

Pièces jointes

  • Ouvre Bonjour(3).zip
    21 KB · Affichages: 18
Dernière édition:

xhudi69

XLDnaute Accro
Re : Vérifier si BlocNote ouvert ou fermé

Bonsoir à toutes et à tous,

@ david84:
j'ai repris le code de PM02 au post#2 que tu as corrigé dans ton post#6.
Puis dans ton post#9 tu me dis de remplacer "." par "le_nom_de_l'ordinateur", ce que j'ai fait mais j'ai du louper quelque chose.
Sur le serveur, le .txt est sur "SRVSBS2\data\communication...........", je pense qu'il faut préciser autre chose mais quoi?

@job75:
Merci pour le fichier, mais je ne veux pas détecter la fenêtre mais si le fichier est ouvert par une autre personne, le fichier étant sur un serveur, voir mon post#16; merci encore.

EDIT: Camarchepas:
ton code au Post#11 me génère une erreur sur la ligne:
Code:
If FichierOK("", NomdeFichier) Then

@+ :cool:
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Re,

@job75:
Merci pour le fichier, mais je ne veux pas détecter la fenêtre mais si le fichier est ouvert par une autre personne, le fichier étant sur un serveur, voir mon post#16; merci encore.

C'est bien ce que j'ai compris, mais vous vous n'avez pas compris mes solutions.

Et pas testé mes fichiers (2) ou (3) sur des ordi en réseau.

A+
 

david84

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Bonsoir,
je commence à m'y perdre avec toutes ces infos donc on résume : tu dis au 1er post
J'ai un BlocNote situé sur un serveur et j'aimerais savoir si il est ouvert ou fermé (peu importe qui l'utilise, là n'est pas la question).
Donc si je m'en tiens à cela tu ne parles pas de fichier particulier mais simplement de savoir si notepad est ouvert sur l'ordinateur en question : est-ce bien cela ?
D'autre part quel est l'ordinateur à partir duquel tu atteins le serveur pour vérifier si le bloc-notes est ouvert ou fermé ?
Est-ce un ordinateur local (en l'occurrence je suppose ton ordinateur) ou un ordinateur distant ?
A+
 

job75

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Re,

Mais non David, xhudi69 veut simplement tester si un fichier précis du Bloc-notes est déjà ouvert sur un ordi quelconque.

Comme à mon avis ce n'est pas possible, moi je contourne le problème avec un fichier Excel partagé sur le réseau.

Le fichier texte ne pouvant être ouvert qu'à partir de ce fichier Excel.

Quand il est déjà ouvert on ne peut l'ouvrir qu'en lecture seule, et alors le fichier est immédiatement fermé.

A+
 

xhudi69

XLDnaute Accro
Re : Vérifier si BlocNote ouvert ou fermé

Bonsoir à toutes et à tous,

c'est exactement cela job75 :) , toutes mes excuses david84.

@ job75: bien évidement, j'ai testé tes fichiers, mais je dois avouer que soit j'ai le cerveau lent ou quelque m'échappe.
Si je prends ton fichier (3), j'ai mis le .txt sur un ordinateur en réseau chez moi et je l'ai ouvert, j'ai ouvert sur mon poste le fichier Excel et rien ne se passe, de plus je peux ouvrir autant de fois que je veux le .txt sur mon écran :confused: , je crois qu'il me faudrait une deuxième leçon :)

par contre, si je reviens à mon Post#8,le code fournit fonctionne très bien avec un .docx, ne faudrait-il pas que je m'oriente dans cette voie ?
J'avais choisis le .txt car cela m'était plus facile (je ne maîtrise pas le code pour Word), et il me semblait que l'ouverture d'un .txt est autrement plus rapide qu'un .docx mais je me trompe peut-être.

Dans ce fichier .txt il n'y a que "VRAI" d'écrit et celui qui trouve ce mot aura la permission de modifier un fichier source en veillant avant de le faire de changer "VRAI" en "FAUX" afin qu'un autre utilisateur se voit interdire toutes actions dans le fichier source.

@+ :cool:

EDIT: mille pardons job75, je viens de comprendre (la fatigue peu-être...), bien vu...
 
Dernière édition:

david84

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Si Gérard a priori je pense que c'est possible puisque le code WMI lorsqu'il tourne sur l'ordinateur local t'indique bien le fait que non seulement notepad est ouvert mais également le chemin du fichier non ? Et comme via WMI tu peux accéder à un ordinateur distant (à partir du moment où il est équipé de WMI, que tu as les droits qui vont bien, le nom du domaine, le nom de l'ordinateur, le nom d'utilisateur, le nom du réseau, etc.) je suppose que tu dois pouvoir obtenir le même résultat que sur l'ordinateur local.
Mais le problème c'est que je ne peux tester à la place de xhudi69 et que je n'ai pas ces informations donc je navigue à vue.
De plus j'ai posé des questions dans mon dernier message mais je n'ai toujours pas les réponses...donc pour l'instant je pense que c'est jouable mais je n'en suis pas sûr.
A+
 

job75

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Re,

Compte-tenu de ceci :

Dans ce fichier .txt il n'y a que "VRAI" d'écrit et celui qui trouve ce mot aura la permission de modifier un fichier source en veillant avant de le faire de changer "VRAI" en "FAUX" afin qu'un autre utilisateur se voit interdire toutes actions dans le fichier source.

je ne vois vraiment pas l'intérêt de passer par un fichier texte.

Il suffit de permettre l'ouverture du "fichier source" uniquement si dans une cellule du fichier pilote "Ouvrir fichier source.xlm" il y a "Oui".

Reste à savoir quels utilisateurs auront le droit de modifier ce "Oui".

A+
 

camarchepas

XLDnaute Barbatruc
Re : Vérifier si BlocNote ouvert ou fermé

Bonjour à tous ,

Pour faire suite à l'interrogation de Xhudi, effectivement , j'ai oublié de te joindre la fonction fichierok, et il est vrai que j'utilise uniquement ma solution avec des appli qui ouvrent et réservent l'utilisation le fichier surveillé.
donc ma solution devrait être revue , mais il y a déjà suffisament de contributeurs , je m'évinse donc

voici néanmoins le code utilisé pour cette fonction fichierOk

Code:
Function FichierOk(Chemin As String, Nom As String) As Boolean
'Test de présence fichier
'
Dim ETAT As Boolean
Dim Fichier As String
'
Fichier = IIf(Chemin <> "", Chemin & "\" & Nom, Nom)
 If Dir(Fichier) <> "" Then
    ETAT = True
  Else
    ETAT = False
 End If

FichierOk = ETAT
End Function
 

Discussions similaires

Réponses
2
Affichages
294

Statistiques des forums

Discussions
312 321
Messages
2 087 265
Membres
103 501
dernier inscrit
talebafia