× Aidez la recherche contre le COVID-19 avec votre ordi ! Rejoignez l'équipe PC Astuces Folding@home
 > Tous les forums > Forum Bureautique
 VBA Excel : détecter si l'explorateur de fichiers est ouvertSujet résolu
Ajouter un message à la discussion
Page : [1] 
Page 1 sur 1
Boogie Palace
  Posté le 17/06/2020 @ 12:59 
Aller en bas de la page 
Petit astucien

bonjour le forum,

tout est dans le titre ; est-ce possible ? (Excel 2010 sous Windows 10)
merci de vos lumières.

Publicité
Debrief
 Posté le 18/06/2020 à 14:13 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Tout ou presque est possible en VBA.

A indenter puisque PCA (dont ce n'est peut-être pas la vocation) n'a toujours pas de style VB comme sur excel-downloads.com.

Sub a()
MsgBox "Explorateur Windows est ouvert ? " & ExplorerIsOpen
End Sub

Function ExplorerIsOpen() As Boolean
Dim Process As Object

For Each Process In GetObject("winmgmts:").ExecQuery("Select * from Win32_Process")
If Process.Caption = "explorer.exe" Then Exit For
Next

ExplorerIsOpen = Not Process Is Nothing
End Function



Modifié par Debrief le 19/06/2020 05:46
Boogie Palace
 Posté le 19/06/2020 à 14:18 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

bonjour et merci Debrief,

malheureusement, le résultat est toujours VRAI, même si aucune fenêtre de l'explorateur de fichiers n'est ouverte.
visiblement le code de ta fonction examine les processus ouverts, et il me semble que explorer.exe (au même titre que svchost.exe qui revient souvent dans les processus ouverts) est une tâche de fond, donc toujours active.

ce qui m'intéresse, ce sont les programmes visibles (Excel, Photoshop, Firefox, etc), avec des fenêtres.
et celle qui m'intéresse ici c'est l'explorateur windows (ex-"gestionnaire de fichier").

à la place des noms de processus, il faudrait pouvoir balayer les noms d'applications qui apparaissent dans le gestionnaire des tâches de Windows 10 (mais uniquement la rubrique "Applications" et non "Processus").
si qqn connaît la commande ad hoc, ce serait super.

Debrief
 Posté le 19/06/2020 à 15:22 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

Sur mon Windows 7 1 processus explorer.exe gère la barre des tâches et un 2ème gère l'exploration de fichiers.

Le 2ème est lancé dès que l'explorateur de fichiers est ouvert et s'arrête quelques 30 à 60 secondes après que le dernier explorateur de fichier a été fermé, mais ce n'est pas instantané.

Une méthode consiste donc à compter les explorer.exe en cours et considérer que tant qu'il y a plus d'un, un explorateur de fichiers est ouvert.

Si tu veux un résultat exact à un instant 't' il faut scanner les applications de la barre des tâches et leur PID, et vérifier si l'un de ces PID est celui de "explorer.exe".

Debrief
 Posté le 19/06/2020 à 16:32 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Ton affaire n'est pas triviale -> https://www.cjoint.com/c/JFtoKnEmUB4

Car non seulement il faut faire comme indiqué ci-dessus mais en plus éliminer les tâches de la barre des tâches qui utilisent 'explorer.exe' comme "Démarrer" et "Program Manager".

Edit: je croise une liste du Task Manager et une liste de la Task Bar sur la base du PID. C'est parce que je n'arrive pas à obtenir le nom du Module directement dans la liste de la Task Bar avec GetWindowModuleFileName. Crash Excel.



Modifié par Debrief le 19/06/2020 17:32
Boogie Palace
 Posté le 22/06/2020 à 11:31 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

wouhaou bravo ça fonctionne.

et c'était pas gagné car ton idée (qui était bonne !) de compter les processus explorer.exe, ne fonctionnait pas sur Windows 10 car un seul processus apparaissait, même avec des fenêtres de l'explorateur ouvertes (j'avais utilisé la boucle de ton script du 18 juin pour les compter).

du coup tu as réussi à contourner ce problème.
maintenant je vais tenter de comprendre le code... mais au moins il fonctionne
merci !

pour la petite histoire (d'ailleurs l'astuce peut servir à d'autres), j'avais besoin de ce code car depuis Windows 10 (j'étais sur 7 avant), la commande PutInClipboard ne fonctionnait plus.
après de longues recherches, j'ai fini par trouver sur des forums que c'était "à cause" de l'Explorateur Windows : quand il est ouvert, la commande PutInClipboard ne fonctionne plus (pas de mémorisation dans le presse-papier), je ferme donc mes fenêtres Explorateur pour que cette commande fonctionne à nouveau, certes ça n'a pas de sens, mais c'est un constat.
ton code me permet de contrôler en amont si j'ai des fenêtres Explorateur, ça m'évite de me rendre compte seulement à la fin de l'exécution que rien n'a été mis dans le presse-papier.
oui, je pourrais penser à vérifier si l'explorateur est ouvert avant d'exécuter mes subs, mais je lance des subs toute la journée (dont plusieurs avec PutInClipboard) et l'explorateur est tout le temps ouvert...

Debrief
 Posté le 22/06/2020 à 19:51 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

OK.

J'ai trouvé pourquoi GetWindowModuleFileName crashait Excel. une simple mauvaise déclaration de paramètres. Ceci dit je n'ai pas réussi à obtenir un résultat de cette fonction qui semble ne plus fonctionner depuis après XP.

Tu peux aussi tuer l'Explorateur au début de ton traitement. Je me suis rendu compte que sur Windows 7, si j'ai un explorer.exe pour la Barre des tâches je n'en ai qu'un seul pour tous les fenêtre Explorateur ouvertes. Et étonnamment, si je tue le processus Explorateur (sans /F) cela supprime une fenêtre Explorateur mais le processus survit jusqu'à ce que je le tue une 2ème fois pour la 2ème fenêtre.

Peut-être que ce principe peut fonctionner pour ton explorer.exe unique de Windows 10. Fichier -> https://www.cjoint.com/c/JFwrXjRIAj4

Une autre solution consisterait à fermer la fenêtre de la Barre des tâches. Je vais essayer de trouver dans l'API une fonction qui fait ça à partir du Handle de la fenêtre, si elle existe.

Debrief
 Posté le 22/06/2020 à 21:33 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

J'ai des difficultés à fermer une fenêtre avec l'API Windows. J'ai essayé différentes fonctions mais je n'en ai qu'une (assez violente) qui fonctionne.

Je ne sais pas si ton processus unique explorer.exe va y résister. Fichier -> supprimé (voir ci-dessous)



Modifié par Debrief le 25/06/2020 12:56
Boogie Palace
 Posté le 25/06/2020 à 12:12 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

merci Debrief pour ce complément qui me sera utile.

ta 1e version du killer (message 22/06 à 19h51) n'a aucun effet sur l'Explorateur sur mon Windows 10.
la 2e version (21h33) fonctionne parfaitement mais est effectivement plus violente : la barre des tâches disparaît puis ressuscite progressivement, sans séquelle apparente.

Publicité
Debrief
 Posté le 25/06/2020 à 12:55 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Astucien

Bonjour,

J'ai été mieux inspiré en lisant ta réponse et en cherchant un peu dans les options de la fonction d'API SendMessage, pour le type de message WM, et j'ai trouvé le WM_CLOSE qui marche très bien chez moi et je pressens qu'il pourrait aussi fonctionner pour Windows 10.

Essaie ce fichier -> https://www.cjoint.com/c/JFzkW6fmzf4

Boogie Palace
 Posté le 25/06/2020 à 15:24 
Aller en bas de la page Revenir au message précédent Revenir en haut de la page
Petit astucien

impeccable

Page : [1] 
Page 1 sur 1

Vous devez être connecté pour poster des messages. Cliquez ici pour vous identifier.

Vous n'avez pas de compte ? Créez-en un gratuitement !


Les bons plans du moment PC Astuces

Tous les Bons Plans
58,45 €SSD Crucial MX500 500 Go à 58,45 € livré
Valable jusqu'au 24 Octobre

Amazon Allemagne propose actuellement le SSD Crucial MX500 500 Go à 53,78 €. Comptez 4,67 € pour la livraison en France soit un total de 58,45 € livré. On le trouve ailleurs à partir de 80 €. Ce SSD salué par la critique par son rapport qualité prix imbattable offre des débits de 560 Mo/s en lecture et 510 Mo/s en écriture. Il est garanti 3 ans.

Rappelons que vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et qu'il n'y a pas de douane.


> Voir l'offre
104,71 €Alimentation Seasonic Focus Plus Gold 650W (garantie 10 ans) à 104,71 € livré
Valable jusqu'au 24 Octobre

Amazon Allemagne fait une promotion sur l'alimentation Seasonic Focus Plus Gold 650W qui passe à 96,11 €. Comptez 8,60 € pour la livraison en France soit un total de 104,71 € livré alors qu'on la trouve ailleurs à partir de 139 €. Le niveau frise la perfection avec une magnifique certification 80+ OR et un câblage full modulaire, le tout dans un silence de cathédrale. L'alimentation est garantie 10 ans.

Vous pouvez utiliser votre compte Amazon France sur Amazon Allemagne et qu'il n'y a pas de douane. Si vous êtes perdu en allemand, vous pouvez traduire le site en anglais.


> Voir l'offre
55 €Microphone USB Bird UM1 à 55 €
Valable jusqu'au 25 Octobre

Amazon fait une vente flash sur le Microphone USB Bird UM1 qui passe à 55 € alors qu'on le trouve ailleurs à partir de 69 €. La livraison est gratuite. Le Bird UM1 est un micro de studio d'excellente qualité avec interface USB intégrée. C'est une solution idéale et tout-en-un qui évite d'avoir à acheter un préampli ou une interface audio supplémentaire.  Idéal pour le studio, YouTube ou l'animation de votre blog.


> Voir l'offre

Sujets relatifs
Ouverture Fichiers Excel depuis l'Explorateur de Fichiers
De l'aide pour =somme.si d'Excel
EXCEL VBA: quelle est la cellule en haut à gauche ?
transférer des fichiers excel et word de open office vers office 2007
excel- Une erreur s'est produit lors de l'envoie de commande au programme
Macro VBA Excel : incohérence de fonctionnement/non fonctionnement
VBA Excel addition de temps
VBA Excel valeur en fonction de cellules
chercher chaîne de caractères VBA dans plusieurs fichiers XL
transfert de fichiers excel word sur tablette avec Android
Plus de sujets relatifs à VBA Excel : détecter si l''explorateur de fichiers est ouvert
 > Tous les forums > Forum Bureautique