В конечном счете, я хочу иметь возможность сделать это для файлового диалога в коде C ++, но возможность сделать это из командной строки будет хорошим началом …
Для «стандартных» библиотек — документов, музыки, изображений и видео — я знаю, что есть специальные имена «shell:», которые работают (список Вот ).
Так, например,
explorer.exe shell:PicturesLibrary
откроет проводник прямо в представлении библиотеки изображений.
Но я создал новую библиотеку, скажем «Моя библиотека», и я не могу найти способ открыть проводник непосредственно в «Моя библиотека». Лучшее, что я могу сделать на данный момент, — это открыть «shell: Libraries» и заставить пользователя спуститься оттуда.
Кто-нибудь знает?
Это консольное приложение запускается с помощью SHGetKnownFolderPath, чтобы получить путь к папке с библиотеками пользователя. Затем он использует ShellExecute для «изучения» библиотечного файла «Моя библиотека» в этом каталоге.
Строка, заданная SHGetKnownFolderPath, освобождается CoTaskMemFree. Кроме того, SHGetKnownFolderPath не имеет версии ANSI, поэтому я просто сделал все в явном виде для широких символов.
Проверка ошибок не включена, так что вы можете добавить это.
#include <Windows.h>
#include <Shellapi.h>
#include <Shlobj.h>
int main() {
PWSTR libraries_path = NULL;
SHGetKnownFolderPath(FOLDERID_Libraries, 0, NULL, &libraries_path);
ShellExecuteW(NULL, L"explore", L"My Library.library-ms",NULL,libraries_path,SW_SHOW);
CoTaskMemFree(libraries_path);
}
Из командной строки это делает нечто подобное:
"%appdata%\Microsoft\Windows\Libraries\My Library.library-ms"