Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 30, 2013 06:30:30

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

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

Офлайн

#2 Сен. 30, 2013 12:46:12

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

это?

import subprocess
subprocess.Popen("notepad.exe C:\\1.txt")
#('explorer "%s"'%(PATH))

Офлайн

#3 Сен. 30, 2013 13:00:58

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

sanodin, спасибо
Мой скрипт просто выполняет клавишу Enter и выделенный файл открывается в дефолтной программе
subprocess.Popen(“notepad.exe C:\\1.txt”) - офигенно, только как в нее вставить название выделенного в Windows'e файла?

Офлайн

#4 Сен. 30, 2013 13:45:00

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

Твой скрипт видит выделенный объект, этот объект и будет в

('explorer "%s"'%(PATH))
, придется узнать выделенный объект и вставить в (путь к объекту)
да , и еще, если твоя программа не в системном каталоге, то надо буде указывать путь к ней (C:\Program Files\your_programm.exe)

Отредактировано sanodin (Сен. 30, 2013 14:03:03)

Офлайн

#5 Окт. 1, 2013 10:57:12

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

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”'). Открылось в фотошопе, пол дела сделано
Как же все таки передать в переменную в скрипт название выделенного файла?

Отредактировано napuznik (Окт. 1, 2013 11:00:51)

Офлайн

#6 Окт. 1, 2013 13:07:16

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

пробуйте с модулем 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]
это указывает открытую директорию в проводнике
ну и отыскать надо выделенный файл

Отредактировано sanodin (Окт. 1, 2013 13:23:02)

Офлайн

#7 Окт. 1, 2013 13:49:24

napuznik
Зарегистрирован: 2012-07-25
Сообщения: 71
Репутация: +  0  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

print window.Toolbar2.Texts() - ошибка
В описании к модулю не нашел ни Toolbar, ни других функций, определяющих, какой файл выделен

Офлайн

#8 Окт. 1, 2013 14:20:48

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

у меня на семерке без ошибок работает
на win server 2008 x 64 тоже выдает ошибку , но здесь путь указывает

print window.Texts()[0]
есть swapy-ob-0.4.3 или WINSPECT , посмотри в этих программах, в них хорошо показано
искать в SysListView32 , DirectUIHWND

Отредактировано sanodin (Окт. 1, 2013 16:16:25)

Офлайн

#9 Окт. 1, 2013 20:03:39

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

или еще вариант:
выделяете файл мышкой, запуск скрипта, скрипт отрабатывает нажатие клавиш “ctrl-C”, копирование,то есть файл скопирован, а в буфере находится теперь полный путь к файлу, вытащить его при помощи winapi, все…)

Офлайн

#10 Окт. 2, 2013 19:54:13

sanodin
От:
Зарегистрирован: 2011-06-16
Сообщения: 515
Репутация: +  31  -
Профиль   Отправить e-mail  

Запустить файл с помощью другой программы

Вот, один хороший человек дал,

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()
если файл скопирован, показывает путь к файлу

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version