Quelqu'un pourrait-il donner un exemple sur la manière d'utiliser la fonction shell ShopEnfolderandSelectStems de C #? Je ne comprends pas vraiment comment utiliser ce genre de fonctions et je n'ai pas pu le trouver sur pinvoke.net . .. = / p>
dire que j'ai trois fichiers appelés p>
x: \ images \ a.jpg code> li>
-
x: \ images \ s.jpg code> li>
-
x: \ images \ d.jpg code> li>
ul>
Je veux ensuite ouvrir le dossier x: \ images code> avec a.jpg code>, s.jpg code> et d. jpg code> sélectionné. p>
4 Réponses :
La plupart des besoins des besoins de Pour la sélection de fichier en C #, vous utiliseriez normalement: System.Windows.Forms.openFileDialog . P>
Pour la sélection de dossiers en C #, vous utiliseriez normalement: System.Windows.Forms.folderBrowserDialog . p>
Vous définiriez un filtre approprié et vous pouvez définir un élément sélectionné initialement. P>
Peut-être que c'est assez proche de ce dont vous avez besoin? p> shopoenfolderselectedems code> serait géré par: p>
Non, ceux que je connais. Ils sont destinés à sélectionner des dossiers ou des fichiers à ouvrir dans votre application. Ce que je veux, c'est ouvrir des fenêtres exploratrices de mon application avec des fichiers sélectionnés. Comme vous pouvez faire par exemple Windows Media Player dans lequel vous pouvez marquer un certain nombre de fichiers, cliquez avec le bouton droit de la souris et cliquez sur "Afficher dans Explorer" ou de ce qu'il est dit. Lorsque vous faites cela, une fenêtre d'explorateur s'ouvrira avec tous les fichiers sélectionnés que vous avez sélectionnés dans WMP.
vérifier http://www.cnblogs.com/ qiuyi21 / archive / 2009/06/24 / 1510592.html . L'exemple utilise IshellLink pour obtenir des PIDL du chemin avant de lancer ShopenfolderDselectItems, j'utiliserais iLcreatefrompath à la place. P>
Hm, je ne lis pas chineese, hehe. Quoi qu'il en soit, pourriez-vous créer un exemple simple d'utiliser ILCreatefrompath et ShopenfolderSelectItems pour sélectionner les 3 fichiers que j'ai mentionnés dans ma question?
Comme vous semblez avoir demandé deux fois la même question (l'autre étant C #: Comment ouvrir les fenêtres de l'Explorateur Windows avec un certain nombre de fichiers sélectionnés qui n'avait pas de réponse) Je posterai ma solution aux deux questions que je ne sais pas si je devrais faire un wiki communautaire. P>
Recherche d'une réponse après qu'un collègue ait eu le problème que je n'avais trouvé aucun donc j'ai écrit une petite classe pour le faire. Le code est sur GIST et je collerai la version actuelle à la fin de cet article. P>
Avec vos fichiers échantillons, la syntaxe sera la suivante: p>
xxx pré> Il existe certaines limitations à mon code par rapport à l'API de faible niveau, principalement: p>
- La sélection du bureau n'est pas implémentée li>
- Le répertoire parent doit être un répertoire ou un lecteur. Vous ne pouvez donc pas sélectionner plusieurs lecteurs dans le dossier de mon ordinateur, par exemple. LI> ul>
Quoi qu'il en soit, voici le code source de la classe showselectedonxplorer: p>
xxx pré> blockQuote>
Cela ressemble à la solution à un problème de mien aussi. Pourriez-vous expliquer comment j'utilise réellement ce code? J'imagine que ce n'est pas quelque chose que je peux simplement mettre un fichier .bat ou .vbs ... merci.
Comme la balise C # implique que c'est une classe C # et il est nécessaire d'être construit à l'aide d'un compilateur C # et appelé à partir d'un programme ou d'une bibliothèque C #.
Il analyse correctement toutes les fenêtres ouvertes et, si la choisi est déjà ouverte, elle n'essaie que de se concentrer. Très bien; Merci beaucoup pour la part.
pas une réponse à 100%, mais cet extrait montre comment sélectionner un seul élément dans l'explorateur de C #.
private void SelectInFileExplorer(string fullPath) { if (string.IsNullOrEmpty(fullPath)) throw new ArgumentNullException("fullPath"); fullPath = Path.GetFullPath(fullPath); IntPtr pidlList = NativeMethods.ILCreateFromPathW(fullPath); if (pidlList != IntPtr.Zero) try { // Open parent folder and select item Marshal.ThrowExceptionForHR(NativeMethods.SHOpenFolderAndSelectItems(pidlList, 0, IntPtr.Zero, 0)); } finally { NativeMethods.ILFree(pidlList); } } static class NativeMethods { [DllImport("shell32.dll", ExactSpelling=true)] public static extern void ILFree(IntPtr pidlList); [DllImport("shell32.dll", CharSet=CharSet.Unicode, ExactSpelling=true)] public static extern IntPtr ILCreateFromPathW(string pszPath); [DllImport("shell32.dll", ExactSpelling=true)] public static extern int SHOpenFolderAndSelectItems(IntPtr pidlList, uint cild, IntPtr children, uint dwFlags); }
Merci, mais celui-ci je me suis trompé seul;)
merci, travaillé pour moi pour la navigation de fichiers dans le réseau