Откройте папку Public Documents в проводнике Windows - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть следующий файл, который мне нужно открыть в окне проводника Windows

C: \ Users \ Public \ Documents \ folder1 \ test.txt

Итакхорошо открывать этот файл по указанному выше пути, и я могу читать его как обычно.

Однако при попытке открыть эту папку через проводник Windows, используя wxExecute((wxChar **)cmd, wxEXEC_ASYNC, NULL);, где cmd - вышеуказанный путь (без файла), он открывает мои пользовательские документы.

Я пробовалразличные функции Windows API для получения пути, некоторые, в том числе, когда публичные документы имеют свой собственный идентификатор, и они все еще генерируют путь, который у меня уже есть.Существуют ли какие-либо параметры интерфейса командной строки, которые я могу назначить проводнику Windows, чтобы он действительно мог открывать публичные документы, не возвращаясь в папку «Мои документы пользователя»?

Ответы [ 3 ]

0 голосов
/ 26 февраля 2019

На самом деле оказалось, что проблема с wxExec от wxWidgets.Преобразование команды в ShellExecute открыло ее просто отлично.Потенциально виджеты 2.9.5 не могут обрабатывать псевдопапки и странности в Windows 10?.

0 голосов
/ 27 февраля 2019

Прежде всего, почему вы приводите свою строку к wxChar**?Это просто не может быть правильным.

Во-вторых, вы должны использовать wxLaunchDefaultApplication () вместо "raw" wxExecute(), во-первых (FWIW wxLaunchDefaultApplication() - простая оболочкадля ShellExecute() под MSW, тогда как wxExecute() намного сложнее).

0 голосов
/ 26 февраля 2019

Это недокументировано, но работало в нескольких версиях Windows, начиная хотя бы с XP, со следующей командной строкой:

explorer.exe /select,"path-to-open"

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

(В Windows 10 на самом деле рекомендуется использовать имя файла, поскольку в противном случае родительская папка открывается с указанной подпапкойвыбранный)

Должен совпадать с CreateProcess, ShellExecute или system(), или с любым другим комфортом, предлагаемым wxWidgets.

...