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