2017-09-08 5 views
0

J'essaie de créer une commande shell pour ouvrir un répertoire donné dans le dossier Explorer à partir duquel la commande est exécutée.Comment ouvrir un répertoire ou un dossier donné dans une fenêtre Explorer existante?

Je l'ajouterais comme une entrée au menu clic-droit dans regedit (HKCR\Directory\background\shell), mais je ne peux pas comprendre comment réellement ouvrir le dossier dans l'instance Explorer actuelle. (comme l'option "emplacement de fichier ouvert").

Répondre

0

La fonction d'emplacement de fichier ouvert (COpenFileLocationMenu dans shell32) est une extension shell, pas une simple commande statique dans le registre. COpenFileLocationMenu implémente également IObjectWithSite.

Lorsque la méthode IContextMenu::InvokeCommand dans COpenFileLocationMenu est appelée, elle appelle IUnknown_QueryService(..., SID_SInPlaceBrowser, IShellBrowser) sur son site afin qu'il puisse naviguer dans la fenêtre Explorer avec IShellBrowser.

éléments de menu de base reçoivent l'emplacement du dossier dans IShellExtInit::Initialize et des éléments de menu normaux peuvent utiliser IShellBrowser::QueryActiveShellView pour obtenir le point de vue et de trouver l'emplacement actuel ...

Si vous ne voulez pas écrire une extension shell vous Il faut se contenter du scriptableShellWindows object mais il faudrait faire quelques suppositions pour trouver la bonne fenêtre, peut-être en PInvoquant GetForegroundWindow de Powershell.