Найти - Пользователи
Полная версия: Получить список выделенных файлов на рабочем столе
Начало » Python для новичков » Получить список выделенных файлов на рабочем столе
1
Doktopat
Шалом всем

используя:
from win32com . client import Dispatch
import win32gui
ShellWindowsCLSID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'
ShellWindows = Dispatch ( ShellWindowsCLSID )
top = win32gui.GetForegroundWindow()
for shellwindow in ShellWindows :
        if int(shellwindow.HWND) == top :
            for j in range(shellwindow.Document.SelectedItems().Count): 
                lis.append(shellwindow.Document.SelectedItems().Item(j).Path)

я получаю выделенные файлы в окне, но как оказалось Desktop не является Shellwindow и когда файлы выбираются на нем ,то ничего не работает…
win7 64 bit ,если что.

вопрос ,как же проверить ,что если foregroundwindow это desktop и соответственно как получить выделенные на нем файлы.
Буду очень рад ,а то вся логика программы работает ,а последних штрих нет
sanodin
Если pywinauto это может, значит это возможно
try:
    w = pywinauto.findwindows.find_windows(class_name='CabinetWClass')[0]# если рабочий стол, то 'Progman'
except: w = pywinauto.findwindows.find_windows(class_name='Progman')[0]
window = pwa_app.window_(handle=w)
Doktopat
Я пытаюсь хоть как то потестить твой код, но для этого мне нужен pywinauto,который я в свою очередь не могу поставить. В нете пишут ,что для pywinauto надо сперва поставить sendkeys. А его я вообще не могу найти во всем интернете. У меня python 2.7.6
Кто может помочь…….
sanodin
Не ставил я ничего кроме pywinauto
Doktopat
package directory pywinauto does not exist
пишу в cmd python c:\путь к pywinauto\setup.py install

пишет следующее(attached)
sanodin
Прежде чем тему создать, подумай, погугли, на форуме посмотри, эти темы по установке модулей, есть везде…
и смотри в pywinauto, код под себя надо будет дорабатывать
Doktopat
pywinauto поставил.
Теперь к твоему коду:
try:
    w = pywinauto.findwindows.find_windows(class_name='CabinetWClass')[0]# если рабочий стол, то 'Progman'
except: w = pywinauto.findwindows.find_windows(class_name='Progman')[0]
window = pwa_app.window_(handle=w)

был бы рад понять ,что тут происходит и куда это воткнуть….
что есть pwa_app
это как то нужно прикрутить к:
ShellWindowsCLSID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}'
    ShellWindows = Dispatch(ShellWindowsCLSID)
    top = win32gui.GetForegroundWindow()
    print type(top)
    print "Top is = " + str(top)
    for shellwindow in ShellWindows:
        shellwindow_to_int = int(shellwindow.HWND)
        print shellwindow_to_int
        #print GetClassName ( shellwindow . HWND )
        if shellwindow_to_int == top:
            print "DADADADADADADADA!!!!!!!!!"
            #print shellwindow . LocationName
            #print shellwindow . LocationURL
            #print 50 * '-'
            for j in range(shellwindow.Document.SelectedItems().Count):
                lis.append(shellwindow.Document.SelectedItems().Item(j).Path)
    try:
        return lis
    except:
        pass
???????????????????????
sanodin
это выдаст список файлов выделенных
# -*- coding: cp1251 -*-
import pywinauto
from pywinauto import win32functions,win32defines
import time
import win32clipboard
import win32gui
import win32com.client
import subprocess
time.sleep(2)
ms=win32functions.SendMessage
shell = win32com.client.Dispatch("WScript.Shell")
pwa_app = pywinauto.application.Application()
try:
    w = pywinauto.findwindows.find_windows(class_name='CabinetWClass')[0]
except: w = pywinauto.findwindows.find_windows(class_name='Progman')[0]
window = pwa_app.window_(handle=w)
window.SetFocus()
win32gui.ShowWindow(w,5)
win32gui.SetForegroundWindow(w)
#win32gui.SetFocus(w)
print window.Texts()[0]
time.sleep(1)
ms(w, shell.SendKeys("^c", 0), 0,0)#копирование
#shell.SendKeys("^a^c", 0)#выделение,копирование
time.sleep(1)
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()
Doktopat
Спасибище!!!!!!
Куча строк кода,но все работает черт возьми!!!
Буду идти построчно и пытаться все это понять
много много раз спасибо тебе!
Как только пойму ,начну прикручивать это к остальной части кода и в самом конце выложу тебе на показ
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