1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
   | # -*- coding: utf-8*-
 
import os
import struct
import win32con
import win32gui
import time
 
 
def findControl(topHwnd,wantedText=None,wantedClass=None,selectionFunction=None):
    childWindows=[] #
    try:
        win32gui.EnumChildWindows(topHwnd,_windowEnumerationHandler,childWindows)
    except:
         print"!!!!!!!!!!!!!!! LE CONTROLE N'EST PEUT-ETRE PAS UN CONTAINER! "
         return childWindows 
    return childWindows
 
def findTopWindow(wantedText=None, wantedClass=None):
    topWindows = []
    win32gui.EnumWindows(_windowEnumerationHandler, topWindows)
    for hwnd, windowText, windowClass in topWindows:
        if wantedText and not windowText.startswith(wantedText):
            continue
        if wantedClass and not windowClass == wantedClass:
            continue
        return hwnd
 
 
def _windowEnumerationHandler(hwnd, resultList):
    resultList.append((hwnd,win32gui.GetWindowText(hwnd),win32gui.GetClassName(hwnd)))
 
def getEditText(hwnd):
    result = []
    bufferlength = struct.pack('i', 255) 
    linecount = win32gui.SendMessage(hwnd, win32con.EM_GETLINECOUNT, 0, 0)
    print"--- linecount :",linecount
 
    for line in range(linecount):
        linetext = bufferlength + "".ljust(253)        
        linelength = win32gui.SendMessage(hwnd, win32con.EM_GETLINE, line, linetext)
	maLigne=linetext[:linelength]	
	print"  ",maLigne
        result.append(maLigne)
    return result
 
 
 
if __name__ == '__main__':
    import win32api 
    liste=[]
    ### 1/ Ouvrir monApplication:    
    os.startfile("C:\Program Files\Harrap's Multimꥩa\Shorter\Bin\HIHarrapsExplorer")
    win32api.Sleep(10) 
 
    ### 2/ Récupérer le handle de monApplication:
    monApplication= win32gui.FindWindow("#32770",None)
    print"--- monApplication :",monApplication
    time.sleep(2)    
 
    ### 3/ Tous les controles de monApplication::
    controls = findControl(monApplication)
    print"Liste de tous les controls de monApplication :"
    hwmdTexte=''
    for handle,nom,classe in controls:
        resultat=getEditText(handle)
        print handle, nom, classe
        if nom=="texte":   
		hwmdTexte=handle		
    resultat=getEditText(hwmdTexte) | 
Partager