i8PdZddlZddlZddlZddlZddlZddlZddlmZddl m Z Gddej Z Gddej Z Gd d e ZGd d e ZGd deZGddeZGddeZGdde ZGdde ZGdde ZGdde ZGdde ZGddeZGdd eZGd!d"eZGd#d$e ZGd%d&e Zejed'fejed(fejed)fej ed*fej!ed+fej"ed,fej#ed-fej$ed.fiZ%Gd/d0e Z&Gd1d2e Z'd9d5Z(e)d6krMe(ej*7ej+Z,ej-Z.e,se.re/d8e,e.fzdSdSdS):aiA utility for browsing COM objects. Usage: Command Prompt Use the command *"python.exe combrowse.py"*. This will display display a fairly small, modal dialog. Pythonwin Use the "Run Script" menu item, and this will create the browser in an MDI window. This window can be fully resized. Details This module allows browsing of registered Type Libraries, COM categories, and running COM objects. The display is similar to the Pythonwin object browser, and displays the objects in a hierarchical window. Note that this module requires the win32ui (ie, Pythonwin) distribution to work. N)browser)utilc*eZdZfdZdZdZxZS)HLIRootcLt|dS)Nname)super__init__)selftitle __class__s GC:\PYTHON\_runtimes\venv\Lib\site-packages\win32com/client/combrowse.pyr zHLIRoot.__init__&s$ e$$$$$ctttjdt gS)NzRunning Objects)HLIHeadingCategoryHLI_IEnumMoniker pythoncomGetRunningObjectTable EnumRunningHLIHeadingRegisterdTypeLibsr s r GetSubListzHLIRoot.GetSubList)sH  /11==??AR   ( ) )   rc"|j|jkSNr)r others r__lt__zHLIRoot.__lt__2sy5:%%r)__name__ __module__ __qualname__r rr __classcell__)rs@rrr%sV%%%%%   &&&&&&&rrceZdZdZdZdS)HLICOMc|jSrrrs rGetTextzHLICOM.GetText7s yrcdS)Nrs rCalculateIsExpandablezHLICOM.CalculateIsExpandable:qrN)rrr r%r)r(rrr#r#6s2rr#c"eZdZddZdZdZdS)HLICLSIDNct|trtj|}|? t j|}n$#tj$rt|}YnwxYwd|z}t|||dS)NzIID: ) isinstancestr pywintypesIIDrProgIDFromCLSID com_errorr#r )r myobjectr s rr zHLICLSID.__init__?s h $ $ 0!~h//H < % 0::& % % %8}} %T>Dh-----sAA#"A#cdSNrr(rs rr)zHLICLSID.CalculateIsExpandableJr*rcgSrr(rs rrzHLICLSID.GetSubListMs rr)rrr r r)rr(rrr,r,>sF . . . .rr,ceZdZdS) HLI_InterfaceN)rrr r(rrr9r9QsDrr9ceZdZdZdZdS)HLI_EnumcdSr6r(rs rGetBitmapColumnzHLI_Enum.GetBitmapColumnVr*rc|jEt|jddk}|jnd}|S)Nr'r)r4lenNextReset)r rcs rr)zHLI_Enum.CalculateIsExpandableYsM = $T]''**++a/B M   ! ! ! !B rN)rrr r=r)r(rrr;r;Us2rr;ceZdZdZdS)rc tj}g}tj|jD]9}|t |||d:|Sr)r CreateBindCtxr Enumeratorr4append HLI_IMonikerGetDisplayName)r ctxretmons rrzHLI_IEnumMoniker.GetSubListcsf%''?4=11 I IC JJ|C););C)F)FGG H H H H rNrrr rr(rrrrb#rrceZdZdZdS)rHcg}|tj|jd|jd}|t |d|S)Nz Hash Valuer'z Sub Monikers)rGrMakeHLIr4HashEnumr)r rKsubenums rrzHLI_IMoniker.GetSubListlsj 7?4=#5#5#7#7FFGGG-$$Q'' #G^<<=== rNrMr(rrrHrHkrNrrHceZdZdZdZdZdS)rz(A tree heading for registered categoriescdS)NzRegistered Categoriesr(rs rr%zHLIHeadingCategory.GetTextws&&rcJtjtjdtjtj}t j|}g} |D]+\}}}|t|||f,n#tj $rYnwxYw|Sr) rCoCreateInstanceCLSID_StdComponentCategoriesMgr CLSCTX_INPROCIID_ICatInformationrrFEnumCategoriesrG HLICategoryr3)r catinfenumrKcatidlciddescs rrzHLIHeadingCategory.GetSubListzs+  5   #  )    v446677 %) = =!tT ;tT':;;<<<< ="    D  s.BB B Nrrr __doc__r%rr(rrrrts8..'''rrceZdZdZdZdZdS)r]zAn actual Registered Categoryc(|jd}|sd}|S)Nz(unnamed category))r4)r rbs rr%zHLICategory.GetTexts }Q ('D rcvtjd|j\}}}tjtjdtjtj}g}tj | |fdD]$}| t|%tjd|S)Nr'r(r) win32ui DoWaitCursorr4rrXrYrZr[rrFEnumClassesOfCategoriesrGr,)r r`rarbr^rKclsids rrzHLICategory.GetSubListsQ MtT+  5   #  )    _V%C%CUHb%Q%QRR ( (E JJx ' ' ' 'Q rNrcr(rrr]r]s8## rr]c&eZdZdZdZdZdZdS) HLIHelpFilecdSr6r(rs rr)z!HLIHelpFile.CalculateIsExpandabler*rchddl}|j\}}|j|d}d|zS)Nrr'zHelp reference in %s)osr4pathsplit)r rqfnamerJbases rr%zHLIHelpFile.GetTexts9 ] sw}}U##A&%..rc|j\}}|r tj}n tj}t jt j|||dSr) r4win32con HELP_CONTEXT HELP_FINDERwin32apiWinHelpri GetMainFrame GetSafeHwnd)r rtrJcmds rTakeDefaultActionzHLIHelpFile.TakeDefaultActionsY] s  ''CC&C-//;;==uc3OOOOOrcdS)Nr(rs rr=zHLIHelpFile.GetBitmapColumnr*rN)rrr r)r%rr=r(rrrnrnsS///PPPrrnceZdZdZdS)HLIRegisteredTypeLibraryc,ddl}|j\}}g}d}tjtjd|d|}t jd d} tj||}n#tj $rYnwxYwtj||} tj | d\} } | tj krtj | } n#tj $rd} YnwxYw|dkr| }n |dkr| } n t|} tj||}d} tj||}n#tj $rYnwxYw tj||}tj |d\}} | tj krtj |}n#tj $rd}YnwxYw|| ||f|dz }tj|n#t $rYnwxYw|dz } t jdtj|n-#t jdtj|wxYwg}|t#||D]\} }}g}|dkr||| r|d | zd}|rd d |z}|t'|d |z||S) NrzTypeLib\\r'HELPDIRFlagswin32z locale=%sz (%s), z Type Library)rqr4rz RegOpenKeyrwHKEY_CLASSES_ROOTrirj RegEnumKeyerrorRegQueryValueEx REG_EXPAND_SZExpandEnvironmentStringsintrG RegCloseKey ValueErrorr,join HLITypeLibsort)r rqclsidstr versionStr collectedhelpPathkeynumsubKeyhSubKeyvaluetypflagsralcidkeylcidnumplatform hplatformrtrK extraDescs extraDescs rrz#HLIRegisteredTypeLibrary.GetSubLists #}* !  &(LH(L(L (L(L   Q, &C' %0c::FF~E"-c6::!)!9'4!H!HJE3h444 ( A% H H~EEEY&&$HHw&&!EE"6{{"*"5c6"B"B"# )&+3+>w+P+P#+>&&& %&+,4,?,R,R -5-EiQU-V-V s#&(*@#@#@,4,Me,T,TE#+>+++(*+%,,dHe-DEEE#qLG )!,W5555%qO' J   # # #   % % % %   # # #   % % % % 8H%%&&&%. F F !D(EJ7""!!(+++ 6!!+"4555I <#dii &;&;; JJz%))CDD E E E E   s H-A'&H-'A:6H-9A::H-#> c3##C$7$7$>$>@RSSTUVe|h&&rc|j\}}||\}}}}g}|r(|tj|d|r$|t ||f|S)NDoc)r4rrGr HLIDocStringrn)r rrr rrJrrKs rrzHLITypeLibEntry.GetSubLists] U##7#>#> c3  9 JJw+C77 8 8 8  5 JJ{Hc?33 4 4 4 rN)rrr r%rr(rrrrs2''' rrceZdZdZdS) HLICoClassc t|}|j\}}||}|}t |dD]}||}|||}|} | tj | dd| d|fz|S)NrzName=%s, Flags = %d) rrr4 GetTypeInfo GetTypeAttrrangeGetImplTypeFlagsGetRefTypeInfoGetRefTypeOfImplTyperGrrQ) r rKrrtypeinfoattrjrrefTyperefAttrs rrzHLICoClass.GetSubLists((..] U??5))##%%tAw  A--a00E--h.K.KA.N.NOOG))++G JJ ,AWQZQVDW,WXX     rNrMr(rrrrs#     rrceZdZddZdZdS)HLITypeLibMethodNcLd|_t|||dS)NMethod) entry_typerr )r obr s rr zHLITypeLibMethod.__init__*s'"  r400000rct|}|j\}}||}|}t |dD]&}|t||f't |dD]&}|t||f'|S)Nr) rrr4rrrrGHLITypeLibPropertyHLITypeLibFunction)r rKrrrris rrzHLITypeLibMethod.GetSubList.s((..] U??5))##%%tAw : :A JJ)8Q-88 9 9 9 9tAw : :A JJ)8Q-88 9 9 9 9 rr)rrr r rr(rrrr)s71111     rrc eZdZdZdZdZdS)HLITypeLibEnumc|\}}||}||d|_||jd}t|||dSr6)r GetVarDescidGetNamesrr )r myitemtypelibrrr s rr zHLITypeLibEnum.__init__;sp&&u--%%e,,Q/  ))!,  vt44444rc|jdzS)Nz - Enum/Modulerrs rr%zHLITypeLibEnum.GetTextBsy+++rchg}|j\}}||}|}t|dD]f}||}||dd}|tj|d|g|S)Nrrr') r4rrrrrrGrrQ) r rKrrrrrvdescr s rrzHLITypeLibEnum.GetSubListEs&&u--##%%tAw 8 8A''**E$$U1X..q1D JJwuQx66 7 7 7 7 rNrrr r r%rr(rrrr:sA555,,,     rrc eZdZdZdZdZdS)rc|\}}||d|_||jd}t|||dSr6)rrrr#r r rrrr s rr zHLITypeLibProperty.__init__Rs[ %%%e,,Q/  ))!,fd+++++rc|jdzS)Nz - Propertyrrs rr%zHLITypeLibProperty.GetTextXy=((rcg}|j\}}||j}t|dkr0|t j|ddd||}|t j|jd|t j|dd|t j|dd|t j|dd|t j|d d |S) Nr' Named Params Dispatch IDValuergz Elem Descz Var FlagszVar Kind)r4rrr?rGrrQr)r rKrrnamesvds rrzHLITypeLibProperty.GetSubList[s-%!!$'** u::>> JJwuQRRy.AA B B B   ' ' 7?47M::;;; 7?2a5'22333 7?2a5+66777 7?2a5+66777 7?2a5*55666 rNrr(rrrrQsA,,, )))     rrc eZdZejdejdejdejdiZej dej dej dej diZ ejd fejd fejd fejd fejd fejdfejdfejdfgZiejdejdejdejdejdejdejdejdejdej dej!dej"dej#dej$dej%dej&d ej'd!iej(d"ej)d#ej*d$ej+d%ej,d&ej-d'ej.d(ej/d)ej0d*ej1d+ej2d,ej3d-ej4d.ej5d/ej6d0ej7d1ej8d2ej9d3ej:d4ej;d5ej<d6ej=d7ej>d8iZ?ej@d9fejAd:fejBd;fejCdZFd?ZGd@ZHdAZIdBS)CrVirtualz Pure VirtualStaticDispatchFunctionz Property Getz Property PutzProperty Put by reference RestrictedSourceBindablez Request Editz Display Bindz Default BindHiddenzUses GetLastErrorEmptyNULLz Integer 2z Integer 4zReal 4zReal 8CYDateString IDispatchErrorBOOLVariantIUnknownDecimalz Integer 1zUnsigned integer 1zUnsigned integer 2zUnsigned integer 4z Integer 8zUnsigned integer 8IntegerzUnsigned integerVoidHRESULTPointer SafeArrayzC Arrayz User DefinedzPointer to stringzPointer to Wide Stringz File timeBlobIStreamIStoragez Stored objectzStreamed objectz Blob objectCFCLSIDVectorArrayByRefReservedc|\}}||d|_||jd}t|||dSr6) GetFuncDescrrr#r rs rr zHLITypeLibFunction.__init__s[ %&&u--a0  ))!,fd+++++rc|jdzS)Nz - Functionrrs rr%zHLITypeLibFunction.GetTextrrc|tjz}|j|d}|jD]\}}||zr|d|d}|S)Nz ?Bad type?())r VT_TYPEMASKvartypesr type_flags)r rjusttyptypnameflagrbs rMakeReturnTypeNamez%HLITypeLibFunction.MakeReturnTypeNamesc ---##G\::/ / /JD$cz /!..G...rct|trP|d}||}|tjkr!|d||dzz }|S||S)Nr r')r.tupleMakeReturnTyperVT_USERDEFINEDr)r returnTypeDescfirstresults rrz!HLITypeLibFunction.MakeReturnTypesz ne , , ;"1%E((//F 000# 3 3N14E F FFFM**>:: :rc g}|j\}}||j}|t j|jdt |dkrC|t jd|ddd||}|dr.|t j|dd|drW|d\}}}| |} |r | d|d|d z } |t j| d |d D][} | \}}}| |} |r | d|d z } | | d |d z } |t j| d \|j |dd} |t j| d|j |dgd} |t j| d|t j|ddg} |j D]%\}}||dzr| |&| r;|t jd| d|S)Nrr'rrzPossible result valuesrz (Flags=z , default=rz Return Typergz (Default=ArgumentrUnknownz Function Kindrz Invoke KindrzNumber Optional Params zFunction Flags)r4rrrGrrQr?rrr funckindsr invokekinds funcflags)r rKrrrfdrrdefaultvalargDescfkindikind flagDescsrrbs rrzHLITypeLibFunction.GetSubLists-%!!$'** 7?47M::;;; u::>> JJwtyyqrr';';^LL M M M  ! !% ( ( a5 I JJwr!u.FGG H H H a5 <"$Q% C%%c**C >=%==7==== JJwsM:: ; ; ;!u 9 9G") C%%c**C +*%****".G.... JJwsJ77 8 8 8 8""2a5)44 7?5/::;;; $$beWi88 7?5-88999 7?2a5*BCCDDD . ' 'JD$be| '  &&&  P JJwtyy';';=MNN O O O rN)Jrrr r FUNC_VIRTUALFUNC_PUREVIRTUAL FUNC_STATIC FUNC_DISPATCHr& INVOKE_FUNCINVOKE_PROPERTYGETINVOKE_PROPERTYPUTINVOKE_PROPERTYPUTREFr'FUNCFLAG_FRESTRICTEDFUNCFLAG_FSOURCEFUNCFLAG_FBINDABLEFUNCFLAG_FREQUESTEDITFUNCFLAG_FDISPLAYBINDFUNCFLAG_FDEFAULTBINDFUNCFLAG_FHIDDENFUNCFLAG_FUSESGETLASTERRORr(VT_EMPTYVT_NULLVT_I2VT_I4VT_R4VT_R8VT_CYVT_DATEVT_BSTR VT_DISPATCHVT_ERRORVT_BOOL VT_VARIANT VT_UNKNOWN VT_DECIMALVT_I1VT_UI1VT_UI2VT_UI4VT_I8VT_UI8VT_INTVT_UINTVT_VOID VT_HRESULTVT_PTR VT_SAFEARRAY VT_CARRAYrVT_LPSTR VT_LPWSTR VT_FILETIMEVT_BLOB VT_STREAM VT_STORAGEVT_STORED_OBJECTVT_STREAMED_OBJECTVT_BLOB_OBJECTVT_CFVT_CLSIDr VT_VECTORVT_ARRAYVT_BYREF VT_RESERVEDrr r%rrrr(rrrrjs "Nx I z$n$n')D K  '6  #X.  %z2  (.9  (.9  (.9  #X.  -/BC I)G)6) )  )  )  ) ) 6) 8) {) G) 6) i) j) i) !)" .#))$ .%)& .')( ))* .+), )-). -/)0 61)2 i3)4 )5)6  7)8 Y9):  .;)< /=)> 5?)@ {A)B 6C)D YE))F j"O$&7 -GQ))HX  h'  W%  W%   + J,,, )));;;'''''rr EnumerationRecordModule InterfacerCoClassAliasUnionceZdZdZdS)rcng}|tj|jd t j|j}n2#tj$r tjd|jzgcYSwxYwt|D]} |t| |d||fG#tj$r*|tjdYwxYw| |S)NFilenamez%s can not be loadedrz The type info can not be loaded!) rGrrQr4r LoadTypeLibr3rGetTypeInfoCountrrr)r rKrrs rrzHLITypeLib.GetSubListsA 7?4=*==>>> M' 66CC" M M MO$:T]$JKKL L L L Ms++--.. P PA P <(;(;A(>(>?BC8LLMMMM& P P P 7?+MNNOOOOO P   s$A ,A:9A:!AC%%6DDNrMr(rrrrs#rrceZdZdZdZdZdS)rz,A tree heading for registered type librariescdS)NzRegistered Type Librariesr(rs rr%z#HLIHeadingRegisterdTypeLibs.GetTexts**rc~g}tjtjd}t jd d} tj||}n#tj$rYnwxYwtj||}d} d}d} tj||} n#tj$rYnJwxYw t| } n#t$rd} YnwxYw| |kr| }tj || }|dz }r tj |n#tj |wxYw|%| t|| f||dz } tj |t jdn-#tj |t jdwxYw||S)NTypeLibr'rg)rzrrwrrirjrrfloatr RegQueryValuerrGrr) r rKrrkeyNamerr subNum bestVersionr versionFlts rrz&HLIHeadingRegisterdTypeLibs.GetSubLists!("D BD B,)D +B,,D 0C?D C D C&D 6E< D!!1E<<*F&Nrcr(rrrrs822+++(((((rrTFcTtd}|rBdtjvr4tjtj|dStj|}|r|dS| | dS)Nz COM Browserzpywin.framework.app) rsysmodulesr MakeTemplatetemplate OpenObjectdynamic_browserDoModal CreateWindow ShowWindow)modalmdirootdlgs rmainrHs = ! !D $ 33##D)))))%d++   KKMMMMM       NN     r__main__)rz*Warning - exiting with %d/%d objects alive)TF)0rdrrr0rzrwri pywin.toolsrwin32com.clientrHLIPythonObjectrr#r,r9r;rrHrr]rnrrrrrrr TKIND_ENUM TKIND_RECORD TKIND_MODULETKIND_INTERFACETKIND_DISPATCH TKIND_COCLASS TKIND_ALIAS TKIND_UNIONrrrrrGetConsoleTitle_GetInterfaceCountni_GetGatewayCountngprintr(rrrs2  &&&&&g%&&&"W $v&     F        }   x=0&4&.GGGGGvGGGTf$         "_.2LLLLLLLL`>=9 _h7 ^X6  0+> /< j)4 OW5 OW5  $.....&...b     zD'x'))**** % % ' 'B # # % %B GRG :b"XEFFFFF  GGr