sanodin
Янв. 18, 2014 12:39:01
пример, если выделенные файлы скопированы в буфер обмена, выдает имена и полный путь к файлам
в PyQt4 можно тоже работать с буфером
наверное при выделении файлов, возможно добавление в буфер с помощью PyQt4
import win32clipboard
win32clipboard.OpenClipboard()
try:
data = win32clipboard.GetClipboardData(win32clipboard.CF_HDROP)
#print 'Files:'
for i in data:
print i
except:
print 'no file'
win32clipboard.CloseClipboard()
Doktopat
Янв. 18, 2014 13:59:40
Замечательно! Спасибо!
Теперь вопрос как же заставить винду скопировать выделенные файлы(запихнуть их в клипборд)
Или же как симулировать нажатие ctrl + ‘c’ причем именно на это окно…
doza_and
Янв. 18, 2014 14:12:19
:) немного не о том. Проблема помоему в инструменте который вы используете. А именно explorer - штука сугубо не предназначенная для легкого расширения функциональности. В любом нормальном файловом менеджере ваша задача решается написанием одной строчки. (far,totale,nautilus,mc). В крайнем случае плагином. Поэтому если что и автоматизировать то уж точно не работу с windows explorer.
Doktopat
Янв. 18, 2014 14:16:05
совершенно не понял ,что вы мне тут написали
sanodin
Янв. 18, 2014 14:32:45
все правильно, с проводником windows, крайне нежелательно работать, сам натыкался на камни, и в разных сборках windows, по разному
doza_and
Янв. 18, 2014 17:26:43
Doktopat
совершенно не понял
ну пример.
far:
жмете <ctrl .> - пошла запись макроса
<tab> - переходите в противоположную панель выбираете нужное место ну например <cd F:\>
<tab> вертаетесь назад жмете <F5> - копируете выделенное
опять жмете <ctrl .> выбираете сочетание клавиш.
Теперь по сочетанию клавиш вы можете копировать выделенные файлы в целевую директорию. Затратили на программирование 12 нажатий на кнопки. По времени секунд 5.
Все - ваша задача решена. Никаких скриптов на питоне вообще не нужно. Любой нормальный менеджер файлов умеет такие вещи от рождения.
.
Doktopat
Янв. 18, 2014 19:57:25
Основная задача не решить задачу копирования, а сделать это обязательно на питоне ибо его же хочу учить. И в общем есть следующее и никак не понять почему не работает.
Причем вроде в дебаге один раз сработало в пучарме, но теперь уже нигде и ничего…:
import win32com.client
import win32gui
import pyHook
import pythoncom
import sys
import win32com.client
clsid = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'
ShellWindows = win32com.client.Dispatch(clsid) #Насколько понимаю то тут получаю набор открытых окон в винде
print ShellWindows.Count #Проверяю что правда работает
for i in range(ShellWindows.Count):
print i
def OnKeyboardEvent(event):
if event.Ascii == 25: #Если нажимаем ctrl + 'Y' то начинаем праздник
top = win32gui.GetForegroundWindow() #Получаем хэндл окна которое сейчас онТОП
for i in range(int(ShellWindows.Count)): #Бежим по количеству открытых окон
if int(ShellWindows[i].HWND) == top: #Если хэндл окна соответствует хэндлу нужного нам окна
for j in range(ShellWindows[i].Document.SelectedItems().Count): #Бежим по количеству выбранных файлов в главном окне
print ShellWindows[i].Document.SelectedItems().Item(j).Path #Печатаем путь к выделенному файлу
elif event.Ascii == 17: #При нажатии ctrl + 'Q' завершаем работу
sys.exit()
hm = pyHook.HookManager()
hm.KeyDown = OnKeyboardEvent
hm.HookKeyboard()
while True:
pythoncom.PumpMessages()
Что же там не так…..
Форматирование конечно обожгло
sanodin
Янв. 18, 2014 20:03:13
код в тэги оборачивайте
в прошлый раз я давал код на pywinauto, на 32 битной семерке у меня работает, находит окно с выделенным файлом и открывает текстовым редактором
Doktopat
Янв. 18, 2014 20:13:50
Я признаю ,что я полный дятел, поэтому буду рад если ты покажешь что значит в тэги оборачивать код.
А самое главное это выложи еще раз код,а то я над всем этим весь день просидел…..
sanodin
Янв. 18, 2014 20:17:50
В сообщении, слева от смайлов менюшка выпадающая, выбираете python, появятся тэги, между ними код вставляете