Есть ли способ получить URL-адрес активного проводника Windows с помощью Python - PullRequest
0 голосов
/ 15 апреля 2019

Мне нужно запустить контекстный элемент окна правой кнопкой мыши и заставить запущенный скрипт выбрать URL-адрес окна активного проводника, который будет передан в выполнение скрипта.

Я уже создал записи и обновил реестр с помощью .bat и могу заставить скрипт работать, если пользователь скопирует адрес активного окна в буфер обмена, а затем щелкнет правой кнопкой мыши внутри активной папки и выберет элемент из меню. Судя по исследованиям, которые я провел, я не могу найти способ сделать то, что я хочу, с помощью Python. Я думал, что мог бы использовать psutils, но это оказалось бесполезным, но я думаю, что это может быть связано с устаревшим модулем, который я обновляю.

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

Ответы [ 2 ]

0 голосов
/ 15 апреля 2019

Вот код для сценария bat, который, возможно, мне нужно будет обновить, но версия .bat, где у меня не работает% v, если я скопировал URL окна Explorer в сначала буфер обмена, так как скрипт Python, запускаемый из контекста, поднимает это.

@echo off
REG ADD "HKCR\Directory\Background\shell\Sort Product Renders" /f /v "Icon" /t REG_SZ /d "Z:\pipeline\Python\python.exe" 
REG ADD "HKCR\Directory\Background\shell\Sort Product Renders\command" /f /ve /t REG_SZ /d "Z:\pipeline\Python\python.exe %v Z:\sort_product_\sort_renders.py"

Следуя совету Jakobs, я обновил его до вышеперечисленного, запустите его, но он не работает.

это то, что у меня было изначально:

REG ADD "HKCR\Directory\Background\shell\Sort Product Renders\command" /f /ve /t REG_SZ /d "Z:\pipeline\Python\python.exe Z:\sort_product_\sort_renders.py"

Я тоже пробовал:

REG ADD "HKCR\Directory\Background\shell\Sort Product Renders\command" /f /ve /t REG_SZ /d "Z:\pipeline\Python\python.exe %v"

Если я распечатываю файл sys.argv [1], это имя запускаемого файла, а это не то, что нужно. Наш python .exe находится на одном сервере, также как и запускаемый скрипт python, и я хочу, чтобы пользователь мог перейти в любую папку, щелкнуть правой кнопкой мыши, выбрать скрипт python и передать URL открытого окна в скрипт. Пока что, используя информацию о jakobs, это не удалось.

Я попробовал sys, argv [1] и он сказал, что индекс вне диапазона, sys.argv [1] также не дает правильного ответа.

0 голосов
/ 15 апреля 2019

Как вы уже упоминали, вам нужно добавить запись в Реестр.См. этот ответ .Установите значение реестра "path/to/executable.exe" "%v".Убедитесь, что вы включили "%v".

. Затем, когда пользователь щелкает элемент контекстного меню, ваш исполняемый файл будет вызываться с путем в качестве аргумента командной строки.Затем вы можете получить путь через sys.argv:

import sys
path = sys.argv[1]
...