Передать цель щелчка правой кнопкой мыши в контекстно-зависимое приложение в контекстном меню

Передать цель щелчка правой кнопкой мыши в контекстно-зависимое приложение в контекстном меню

Я хочу создать в Windows 7 контекстное меню, вызываемое щелчком правой кнопки мыши, которое будет зависеть от контекста и сможет передавать имя определенного файла/папки в сценарий оболочки.

Я знаю, что это должно быть возможно — например, если у вас есть файл 7zip, вы можете щелкнуть по нему правой кнопкой мыши, а затем сказать «Извлечь здесь», и каким-то образом целевой файл (архив .7z) будет передан программе 7zip.

В частности, у меня есть скрипт, который берет файл .c и помещает его в листинг LaTeX и запускает pdflatex, чтобы сделать файлы, хорошо отформатированные для чтения. Однако мне нужно указать файл как аргумент командной строки. Я хотел бы сделать так, чтобы я мог щелкнуть правой кнопкой мыши по файлу и автоматически запустить этот скрипт, автоматически передавая путь к цели щелчка правой кнопкой мыши в аргумент командной строки.

решение1

Добро пожаловать в SuperUser!

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

Откройте редактор реестра и перейдите к HKEY_CLASSES_ROOT. Здесь вы увидите кучу расширений файлов — это то, что управляет контекстным меню.

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

Процесс выглядит следующим образом:

  1. Создайте новый ключ под shellключом того, к чему вы добавляете данные.
  2. Если вы хотите, чтобы у этого пункта меню был значок, добавьте строку с именем Iconтолько что созданного вами ключа, указав в качестве значения путь к значку.
  3. Добавить ключподсозданный вами элемент называетсяcommand
  4. Измените запись (Default) в этом разделе, чтобы она указывала на скрипт, который вы хотите открыть, добавив туда, "%1"где в командной строке должно находиться имя файла, передаваемое программе.

А где этот новый пункт меню должен быть? Если вы хотите, чтобы он отображался...

  • для всех файлов определенного расширения поместите его под соответствующий ключ расширения (если его не существует, вы можете создать его).
  • для всех файлов везде, поместите его под *ключ
  • для всех каталогов поместите его под Directoryключ.

Связанный контент