napuznik
Сен. 30, 2013 06:30:30
Добрый день, подскажите, пожалуйста:
Скрипт умеет запускать выделенный мышкой файл. Но, как запустить его не программой по-умолчанию, а с помощью указанной в python скрипте? Например, C

Photoshop.exe, вместо дефолтного вьювера
Заранее благодарю
sanodin
Сен. 30, 2013 12:46:12
это?
import subprocess
subprocess.Popen("notepad.exe C:\\1.txt")
#('explorer "%s"'%(PATH))
napuznik
Сен. 30, 2013 13:00:58
sanodin, спасибо
Мой скрипт просто выполняет клавишу Enter и выделенный файл открывается в дефолтной программе
subprocess.Popen(“notepad.exe C:\\1.txt”) - офигенно, только как в нее вставить название выделенного в Windows'e файла?
sanodin
Сен. 30, 2013 13:45:00
Твой скрипт видит выделенный объект, этот объект и будет в
, придется узнать выделенный объект и вставить в (путь к объекту)
да , и еще, если твоя программа не в системном каталоге, то надо буде указывать путь к ней (C:\Program Files\your_programm.exe)
napuznik
Окт. 1, 2013 10:57:12
sanodin, суть такая: в винде выделяю файл, запускаю скрипт.
Скрипт выглядит так:
ctypes.windll.user32.keybd_event(0x0D, 0, 0, 0, 0)
ctypes.windll.user32.keybd_event(0x0D, 0, 0x0002, 0)
Заменил это на:
subprocess.Popen ('“C:\photoshop.exe” “C:\1560.jpg”'). Открылось в фотошопе, пол дела сделано
Как же все таки передать в переменную в скрипт название выделенного файла?
sanodin
Окт. 1, 2013 13:07:16
пробуйте с модулем pywinauto, найти хендл открытого окна , типа так
import pywinauto
pwa_app = pywinauto.application.Application()
w=pywinauto.findwindows.find_windows(class_name='CabinetWClass')[0]
window = pwa_app.window_(handle=w)
print window.Texts()[0]
pwa_app = pywinauto.application.Application()
w=pywinauto.findwindows.find_windows(class_name='CabinetWClass')[0]
window = pwa_app.window_(handle=w)
print window.Toolbar2.Texts()[0]
это указывает открытую директорию в проводнике
ну и отыскать надо выделенный файл
napuznik
Окт. 1, 2013 13:49:24
print window.Toolbar2.Texts() - ошибка
В описании к модулю не нашел ни Toolbar, ни других функций, определяющих, какой файл выделен
sanodin
Окт. 1, 2013 14:20:48
у меня на семерке без ошибок работает
на win server 2008 x 64 тоже выдает ошибку , но здесь путь указывает
есть swapy-ob-0.4.3 или WINSPECT , посмотри в этих программах, в них хорошо показано
искать в SysListView32 , DirectUIHWND
sanodin
Окт. 1, 2013 20:03:39
или еще вариант:
выделяете файл мышкой, запуск скрипта, скрипт отрабатывает нажатие клавиш “ctrl-C”, копирование,то есть файл скопирован, а в буфере находится теперь полный путь к файлу, вытащить его при помощи winapi, все…)
sanodin
Окт. 2, 2013 19:54:13
Вот, один хороший человек дал,
import win32clipboard
win32clipboard.OpenClipboard()
try:
data = win32clipboard.GetClipboardData(win32clipboard.CF_HDROP)
print 'Files:'
for i in data:
print i
except:
print 'No file to the clipboard'
win32clipboard.CloseClipboard()
если файл скопирован, показывает путь к файлу