Выбор папки из ярлыка - Visual Basic .NET

Узнай цену своей работы

Формулировка задачи:

Добрый день! Возникла необходимость выбирать расшаренную папку

в сетевом расположении

. Обычно пользователь пользуется быстрым переходом к этим папкам через ярлыки на рабочем столе/в избранном/etc. Класс FolderBrowserDialog эти ярлыки соответственно не видит(выбор компьютера и ее расшаренной папки из ветки "Сеть" не предлагать - компьютеров очень много). Идеальный вариант - класс OpenFileDialog, но он работает только с файлами, а мне необходимо выбрать папку(задать переменной путь к этой папке). Может кто подскажет/поделится примером своего класса типа FolderBrowserDialog или какие-либо трюки с имеющимися классами?

Решение задачи: «Выбор папки из ярлыка»

textual
Листинг программы
  1. Imports System.IO
  2.  
  3. Public Module ShortcutHelper
  4.     Public Function IsShortcut(strPath As String) As Boolean
  5.         If Not File.Exists(strPath) Then
  6.             Return False
  7.         End If
  8.  
  9.         Dim directory As String = Path.GetDirectoryName(strPath)
  10.         Dim strFile As String = Path.GetFileName(strPath)
  11.  
  12.         Dim shell As Shell32.Shell = New Shell32.Shell()
  13.         Dim folder As Shell32.Folder = shell.NameSpace(directory)
  14.         Dim folderItem As Shell32.FolderItem = folder.ParseName(strFile)
  15.  
  16.         If folderItem IsNot Nothing Then
  17.             Return folderItem.IsLink
  18.         End If
  19.  
  20.         Return False
  21.     End Function
  22.  
  23.     Public Function ResolveShortcut(strPath As String) As String
  24.         If IsShortcut(strPath) Then
  25.             Dim directory As String = Path.GetDirectoryName(strPath)
  26.             Dim strFile As String = Path.GetFileName(strPath)
  27.  
  28.             Dim shell As Shell32.Shell = New Shell32.Shell()
  29.             Dim folder As Shell32.Folder = shell.NameSpace(directory)
  30.             Dim folderItem As Shell32.FolderItem = folder.ParseName(strFile)
  31.  
  32.             Dim link As Shell32.ShellLinkObject = folderItem.GetLink
  33.  
  34.             Return link.Path
  35.         End If
  36.  
  37.         Return String.Empty
  38.     End Function
  39. End Module

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.75 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы