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

В стандартном диалоговом окне открытия файлов 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 ответ

Решение

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

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

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

Другие вопросы по тегам