4

В стандартном диалоговом окне открытия файлов Windows (например, в диалоговом окне «Файл> Открыть» в «Блокноте») я хотел бы иметь возможность вводить путь, содержащий косые черты / . Но принимаются только обратные слеши (я пробовал как в Windows XP, так и в Windows 7). Я могу открыть c:\autoexec.bat , но если я пытаюсь открыть /autoexec.bat или c:/autoexec.bat , я получаю сообщение об ошибке

c:/autoexec.bat
The file name is not valid.

В некоторых контекстах Windows принимает косую черту как разделитель пути, но, к сожалению, не в диалоговом окне открытия файла, по крайней мере по умолчанию.

Существует ли магический параметр реестра, дополнительная программа или другой разумный метод, который позволил бы мне использовать косые черты в диалоговом окне открытия файлов Windows? Меня особенно интересует Office 2007, работающий под Windows 7, но я бы предпочел решение, которое применяется ко всем приложениям, использующим стандартный диалог под XP и 7.

«Не используйте Windows» не вариант.

1 ответ1

4

Боюсь, ответ - нет: диалоговое окно, которое вы видите, происходит из стандартного API Windows, и большинство программ будет его использовать. При его программировании есть пара опций, которые могут быть включены / выключены, и одна из причин вашей проблемы - OFN_FILEMUSTEXIST в структуре OPENFILENAME . Я не мог найти ничего, документирующего, как именно он выполняет проверку, не говоря уже о способе изменить, как он это делает.

Единственное решение, которое я вижу на стороне Windows, это исправление dll, содержащего функцию, и заставление ее делать еще одну проверку, позволяющую выполнять прямую косую черту, но это требует огромного количества навыков.

С другой стороны, все может быть исправлено, если вы какой-то программист: самое быстрое, что я могу придумать (кроме изменения источника строк), это создать небольшую программу командной строки, которая принимает текущий ввод буфера обмена и конвертирует вперед для обратной косой черты и снова помещает результат в буфер обмена. Поместите его в командный файл, назначьте ему ярлык и готово. Ваш рабочий процесс будет следующим: скопировать путь, нажать ярлык, нажать Ctrl-V в диалоговом окне, это всего лишь один простой дополнительный шаг. Я думаю, что большинство языков сценариев могут получать содержимое буфера обмена в Windows, и все они могут заменять регулярные выражения, так что на самом деле это всего лишь несколько строк кода.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .