У меня есть следующий файл, который мне нужно открыть в окне проводника Windows
C:\Users\Public\Documents\folder1\test.txt
Пока открытие этого файла по указанному выше пути нормально, и я могу читать его как обычно.
Однако при попытке открыть эту папку через проводник Windows с помощью wxExecute((wxChar **)cmd, wxEXEC_ASYNC, NULL);, где cmd — указанный выше путь (минус файл), он открывается для моих пользовательских документов.
Я пробовал различные функции Windows API, чтобы получить путь, в том числе те, где общедоступные документы имеют собственный идентификатор, и они по-прежнему генерируют путь, который у меня уже есть. Есть ли какие-либо параметры CLI, которые я могу предоставить проводнику Windows, чтобы он мог фактически открывать общедоступные документы, не возвращаясь к моей папке «Документы пользователя»?





Это недокументировано, но работало в нескольких версиях Windows, по крайней мере, с XP со следующей командной строкой:
explorer.exe /select,"path-to-open"
Обратите внимание на запятую и убедитесь, что путь заключен в кавычки. Путь может включать имя файла, и в этом случае этот файл выбирается.
(В Windows 10 рекомендуется использовать имя файла, поскольку в противном случае родительская папка открывается с выбранной указанной подпапкой)
Должно быть то же самое с CreateProcess, ShellExecute или system(), или с любым другим удобством, которое предлагает wxWidgets.
На самом деле проблема оказалась с wxExec от wxWidgets. Преобразование команды в ShellExecute открыло ее просто отлично. Потенциально виджеты 2.9.5 не могут обрабатывать псевдопапки и странности Windows 10?
Во-первых, почему вы переводите свою строку в wxChar**? Это просто не может быть правильным.
Во-вторых, вы должны в первую очередь использовать wxLaunchDefaultApplication() вместо «сырого» wxExecute() (FWIW wxLaunchDefaultApplication() — это простая оболочка для ShellExecute() под MSW, а wxExecute() гораздо сложнее).
Кастинг был из комментария к аналогичному вопросу, просто пробовал разные вещи. wxLaunchDefaultApplication работает. Не уверен, что wxExecute вызывает проблемы со структурой общих папок, но все, что связано с ShellExecute, похоже, в порядке. Спасибо!