Форум сайта python.su
тэги поставил, но они не помогают
Очень жду код…
насколько я понимаю pywinauto это библиотека питона , а не какая нибудь внешняя утилита или прога
с тэгами разобрались!
Отредактировано Doktopat (Янв. 18, 2014 20:19:51)
Офлайн
да, pywinauto библиотека, упрощает работу с api windows
Отредактировано sanodin (Янв. 18, 2014 20:27:44)
Офлайн
Сидел с прогером пару часов сейчас и он мне показывал ,что действительно хэндл когда совпадает ,то он входит внутрь. Это у нас работало. А по какой то причине ,сейчас не хочет. Не ясно почему….
Офлайн
проверь
from win32com . client import Dispatch from win32gui import GetClassName import win32gui ShellWindowsCLSID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}' ShellWindows = Dispatch ( ShellWindowsCLSID ) top = win32gui.GetForegroundWindow() #Получаем хэндл окна которое сейчас онТОП print top for shellwindow in ShellWindows : print shellwindow.HWND print GetClassName ( shellwindow . HWND ) if GetClassName ( shellwindow . HWND ) == 'CabinetWClass' : print shellwindow . LocationName print shellwindow . LocationURL print 50 * '-' for j in range(shellwindow.Document.SelectedItems().Count): #Бежим по количеству выбранных файлов в главном окне print shellwindow.Document.SelectedItems().Item(j).Path #Печатаем путь к выделенному файлу
Офлайн
я взял лишь часть твоего кода, посмотри:
from win32com.client import Dispatch import win32gui from win32gui import GetClassName import pyHook import pythoncom import sys import win32com.client ShellWindowsCLSID = '{9BA05972-F6A8-11CF-A442-00A0C90A8F39}' ShellWindows = Dispatch(ShellWindowsCLSID) def OnKeyboardEvent(event): if event.Ascii == 25: top = win32gui.GetForegroundWindow() print top for shellwindow in ShellWindows: print shellwindow.HWND print GetClassName(shellwindow.HWND) #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: sys.exit() hm = pyHook.HookManager() hm.KeyDown = OnKeyboardEvent hm.HookKeyboard() while True: pythoncom.PumpMessages()
Офлайн
отдельно от хука код работает, а с хуком не хочет
Офлайн
В общем хук во всем виноват
Может сможешь придумать как его обойти?
Может можно как то иначе инициировать запуск программы….
Офлайн
в PyQt4 есть обработка нажатий клавиш, сигналы, возвращайся в трей-программу и пили там
http://python.su/forum/topic/13195/
или http://timgolden.me.uk/python/win32_how_do_i/catch_system_wide_hotkeys.html
Отредактировано sanodin (Янв. 18, 2014 22:48:41)
Офлайн
Fix me if I am wrong ,but the code from this link:
http://timgolden.me.uk/python/win32_how_do_i/catch_system_wide_hotkeys.html
can work without PyQt4…..
Have I just take the necessary parts of the code and use it in my code?
Офлайн
Doktopatвторая ссылка была есесно на win32api
Fix me if I am wrong ,but the code from this link:http://timgolden.me.uk/python/win32_how_do_i/catch_system_wide_hotkeys.htmlcan work without PyQt4…..Have I just take the necessary parts of the code and use it in my code?
import sys import win32com.client try: strComputer = sys.argv[1] except IndexError: strComputer = "." objWMIService = win32com.client.Dispatch( "WbemScripting.SWbemLocator" ) objSWbemServices = objWMIService.ConnectServer( strComputer, "root/CIMV2" ) colItems = objSWbemServices.ExecQuery( "SELECT * FROM Win32_LogicalDisk" ) if colItems.Count == 1: print( "1 instance:" ) else: print( str( colItems.Count ) + " instances:" ) print( ) for objItem in colItems: if objItem.Description == 'Removable Disk': if objItem.BlockSize != None: print( "BlockSize : " + str( objItem.BlockSize ) ) if objItem.Caption != None: print( "Caption : " + str( objItem.Caption ) ) if objItem.Description != None: print( "Description : " + str( objItem.Description ) ) if objItem.DeviceID != None: print( "DeviceID : " + str( objItem.DeviceID ) ) if objItem.DriveType != None: print( "DriveType : " + str( objItem.DriveType ) ) if objItem.FileSystem != None: print( "FileSystem : " + str( objItem.FileSystem ) ) if objItem.Name != None: print( "Name : " + str( objItem.Name ) ) strList = " " try: for objElem in objItem.PowerManagementCapabilities : strList = strList + str( objElem ) + "," except: strList = strList + 'null' if objItem.Size != None: print( "Size : " + str( objItem.Size ) ) if objItem.VolumeSerialNumber != None: print( "VolumeSerialNumber : " + str( objItem.VolumeSerialNumber ) ) print( )
Отредактировано sanodin (Янв. 19, 2014 17:52:34)
Офлайн