1

У меня есть инструмент, который я добавил в подраздел shell ключа any-file в HKEY_CLASSES_ROOT, чтобы он появлялся в меню правой кнопки мыши любого файла (также есть в меню каталога).

[HKEY_CLASSES_ROOT\*\shell\PathToClipboard]
@="Path -> Clipboard"

[HKEY_CLASSES_ROOT\*\shell\PathToClipboard\command]
@="C:\\Program Files (x86)\\PathToClipboard.exe %1"

Инструмент делает только копирование заданного параметра (пути к файлу) в буфер обмена.

Это работало целую вечность, по крайней мере, после Win ME (возможно, с тех пор перекомпилировалось). Это также отчасти работает для win-7, но с некоторыми особенностями: если путь к файлу содержит пробелы или любые другие не алфавитно-цифровые символы, он сокращается до имени совместимости с DOS.

Например: C:\PROGRA~2\PATHTO~1.EXE

Это можно обойти?

Если я поставлю " около %1 то путь верный, но окна также передают " программе (что я давно не трогал. Уверен, что смогу решить эту проблему в инструменте, но мне интересно, можно ли исправить грубое поведение на стороне окна).

1 ответ1

1

Если имя программы содержит пробелы или другие не алфавитно-цифровые символы, оно сокращается до имени совместимости DOS.

@="C:\\Program Files (x86)\\PathToClipboard.exe %1"

Кавычки должны быть вокруг отдельных частей, а не всей строки.

В этом конкретном случае вам следует указывать только первую часть (имя программы) и всю строку:

@="\"C:\\Program Files (x86)\\PathToClipboard.exe\" %1"

Замечания:

  • \ используется для экранирования внутренних кавычек (тех, которые находятся вокруг имени программы)
  • Если вы также заключите в кавычки %1 (путь к файлу), он добавит кавычки, когда путь к файлу будет передан программе, поэтому не заключайте эту часть в кавычки.

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