Найти - Пользователи
Полная версия: Запустить файл с помощью другой программы
Начало » Python для новичков » Запустить файл с помощью другой программы
1 2
napuznik
Добрый день, подскажите, пожалуйста:
Скрипт умеет запускать выделенный мышкой файл. Но, как запустить его не программой по-умолчанию, а с помощью указанной в python скрипте? Например, CPhotoshop.exe, вместо дефолтного вьювера
Заранее благодарю
sanodin
это?

import subprocess
subprocess.Popen("notepad.exe C:\\1.txt")
#('explorer "%s"'%(PATH))
napuznik
sanodin, спасибо
Мой скрипт просто выполняет клавишу Enter и выделенный файл открывается в дефолтной программе
subprocess.Popen(“notepad.exe C:\\1.txt”) - офигенно, только как в нее вставить название выделенного в Windows'e файла?
sanodin
Твой скрипт видит выделенный объект, этот объект и будет в
('explorer "%s"'%(PATH))
, придется узнать выделенный объект и вставить в (путь к объекту)
да , и еще, если твоя программа не в системном каталоге, то надо буде указывать путь к ней (C:\Program Files\your_programm.exe)
napuznik
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
пробуйте с модулем 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
print window.Toolbar2.Texts() - ошибка
В описании к модулю не нашел ни Toolbar, ни других функций, определяющих, какой файл выделен
sanodin
у меня на семерке без ошибок работает
на win server 2008 x 64 тоже выдает ошибку , но здесь путь указывает
print window.Texts()[0]
есть swapy-ob-0.4.3 или WINSPECT , посмотри в этих программах, в них хорошо показано
искать в SysListView32 , DirectUIHWND
sanodin
или еще вариант:
выделяете файл мышкой, запуск скрипта, скрипт отрабатывает нажатие клавиш “ctrl-C”, копирование,то есть файл скопирован, а в буфере находится теперь полный путь к файлу, вытащить его при помощи winapi, все…)
sanodin
Вот, один хороший человек дал,
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()
если файл скопирован, показывает путь к файлу
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB