Мне нужно получить путь ... Но он не возвращает местоположение специальных папок, таких как Компьютер, Корзина, Сеть и т. Д.
Непосредственная проблема, с которой вы сталкиваетесь, заключается в том, что LocationURL
возвращает ""
, если местоположение окна не является физическим каталогом. Для «Моего компьютера», «Корзины» и «Сети» это неудивительно - это виртуальные папки; - это не путь или URL, которые могут указывать на них, потому что они не расположены на диске.
Однако, если вы перейдете к «Документам» (что соответствует каталогу на диске, даже если это также специальная папка), LocationURL
по-прежнему возвращает ""
. Здесь он может дать вам путь, но он решает не делать этого. Это кажется несколько подлым.
Я нашел документацию, в которой говорится, что ShellWindows возвращает InternetExplorer
объектов . Я не смог найти никаких документов для класса ShellBrowserWindow
, который вы используете, но InternetExplorer
кажется похожим или идентичным, поэтому у него есть некоторая документация , на которую вы можете сослаться, а не просто смотреть на имена свойств в Intellisense.
Единственное другое полезное свойство - LocationName
, которое возвращает что-то даже для виртуальных или специальных папок. Тем не менее, он возвращает строку типа «Документы» или «Библиотеки», которую вы не можете использовать программно (в разных регионах, в разных версиях Windows и т. Д.).
Если все, что вам нужно, это что-то показать в списке, LocationName
, вероятно, будет достаточно. Если вам действительно нужен путь, вам, вероятно, не повезло (хотя в любом случае это было бы так, потому что, как отмечалось, такие вещи, как компьютер, корзина и сеть, не имеют путей).