Возможно ли открыть GetOpenFileName в директории по умолчанию «Компьютер»?

я использую GetOpenFileName чтобы открыть файлы в C ++, возможно ли установить начальный каталог в виртуальном расположении «Компьютер» с помощью lpstrInitialDir?

Спасибо,
Lee.

1

Решение

Это невозможно с GetOpenFileName потому что местоположение, которое вы хотите использовать, не является частью файловой системы. Скорее, это часть более широкого пространства имен оболочки.

Если вы посмотрите на документацию для GetOpenFileName вы увидите, что он был заменен (на самом деле более 10 лет назад) диалогами общих предметов. Эти диалоги позволяют вам указывать начальную папку как элемент оболочки.

3

Другие решения

Если вам нужно поддерживать устаревшую Windows старше Vista, где IFileDialog недоступен, попробуйте указать GUID папки Shell. Например, My Computer GUID есть 20D04FE0-3AEA-1069-A2D8-08002B30309D, Вы можете указать это так:

ofn.lpstrInitialDir = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}";

Однако стоит отметить, что этот метод почти обречен на сбой в Windows 7 и более поздних поведенческие изменения

Итак, вам лучше использовать IFileDialog на Vista и позже вместо этого.

1

По вопросам рекламы [email protected]