a „oe;Oã@sdZddlZddlZddlZddlZddlZddlmZddlm Z Gdd„dej ƒZ Gdd„dej ƒZ Gd d „d e ƒZ Gd d „d e ƒZGd d„deƒZGdd„deƒZGdd„deƒZGdd„de ƒZGdd„de ƒZGdd„de ƒZGdd„de ƒZGdd„de ƒZGdd„deƒZGdd „d eƒZGd!d"„d"eƒZGd#d$„d$e ƒZGd%d&„d&e ƒZejed'fejed(fejed)fejed*fej ed+fej!ed,fej"ed-fej#ed.fiZ$Gd/d0„d0e ƒZ%Gd1d2„d2e ƒZ&d:d5d6„Z'e(d7kre'e )¡d8e *¡Z+e ,¡Z-e+s e-re.d9e+e-fƒdS);avA 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)Úutilcs,eZdZ‡fdd„Zdd„Zdd„Z‡ZS)ÚHLIRootcstƒj|ddS)N©Úname)ÚsuperÚ__init__)ÚselfÚtitle©Ú __class__©ú:C:\Program Files\Certbot\pkgs\win32com\client\combrowse.pyr$szHLIRoot.__init__cCstƒtt ¡ ¡dƒtƒgS)NzRunning Objects)ÚHLIHeadingCategoryÚHLI_IEnumMonikerÚ pythoncomZGetRunningObjectTableZ EnumRunningÚHLIHeadingRegisterdTypeLibs©r r r rÚ GetSubList's  ÿûzHLIRoot.GetSubListcCst|j|jƒS©N)Úcmpr)r Úotherr r rÚ__cmp__0szHLIRoot.__cmp__)Ú__name__Ú __module__Ú __qualname__rrrÚ __classcell__r r r rr#s  rc@seZdZdd„Zdd„ZdS)ÚHLICOMcCs|jSrrrr r rÚGetText5szHLICOM.GetTextcCsdS)Nér rr r rÚCalculateIsExpandable8szHLICOM.CalculateIsExpandableN)rrrrr r r r rr4src@s&eZdZddd„Zdd„Zdd„ZdS) ÚHLICLSIDNcCsht|ƒtdƒkrt |¡}|durVzt |¡}WntjyLt|ƒ}Yn0d|}t |||¡dS)NÚzIID: )ÚtyperZMakeIIDZProgIDFromCLSIDÚ com_errorÚstrrr)r Úmyobjectrr r rr=s zHLICLSID.__init__cCsdS©Nrr rr r rr HszHLICLSID.CalculateIsExpandablecCsgSrr rr r rrKszHLICLSID.GetSubList)N)rrrrr rr r r rr!<s r!c@s eZdZdS)Ú HLI_InterfaceN)rrrr r r rr(Osr(c@seZdZdd„Zdd„ZdS)ÚHLI_EnumcCsdSr'r rr r rÚGetBitmapColumnTszHLI_Enum.GetBitmapColumncCs2|jdur*t|j d¡ƒdk}|j ¡nd}|S)Nrr)r&ÚlenZNextZReset)r Úrcr r rr Ws   zHLI_Enum.CalculateIsExpandableN)rrrr*r r r r rr)Ssr)c@seZdZdd„ZdS)rc Cs:t ¡}g}t |j¡D]}| t|| |d¡ƒ¡q|Sr)rZ CreateBindCtxrÚ Enumeratorr&ÚappendÚ HLI_IMonikerZGetDisplayName)r ÚctxÚretZmonr r rrcs zHLI_IEnumMoniker.GetSubListN©rrrrr r r rrbsrc@seZdZdd„ZdS)r/cCs<g}| t |j ¡d¡¡|j d¡}| t|dƒ¡|S)Nz Hash Valuerz Sub Monikers)r.rÚMakeHLIr&ZHashÚEnumr)r r1Zsubenumr r rrls  zHLI_IMoniker.GetSubListNr2r r r rr/ksr/c@s eZdZdZdd„Zdd„ZdS)rz(A tree heading for registered categoriescCsdS)NzRegistered Categoriesr rr r rrwszHLIHeadingCategory.GetTextcCsjt tjdtjtj¡}t | ¡¡}g}z(|D]\}}}| t |||fƒ¡q.Wntj ydYn0|Sr) rÚCoCreateInstanceÚCLSID_StdComponentCategoriesMgrÚ CLSCTX_INPROCÚIID_ICatInformationrr-ZEnumCategoriesr.Ú HLICategoryr$)r ÚcatinfÚenumr1ÚcatidÚlcidÚdescr r rrzsüzHLIHeadingCategory.GetSubListN©rrrÚ__doc__rrr r r rrtsrc@s eZdZdZdd„Zdd„ZdS)r9zAn actual Registered CategorycCs|jd}|sd}|S)Néz(unnamed category))r&)r r>r r rrs zHLICategory.GetTextcCsft d¡|j\}}}t tjdtjtj¡}g}t  |  |fd¡¡D]}|  t |ƒ¡qDt d¡|S)Nrr r) Úwin32uiÚ DoWaitCursorr&rr5r6r7r8rr-ZEnumClassesOfCategoriesr.r!)r r<r=r>r:r1Zclsidr r rr•s  ü zHLICategory.GetSubListNr?r r r rr9Œsr9c@s,eZdZdd„Zdd„Zdd„Zdd„Zd S) Ú HLIHelpFilecCsdSr'r rr r rr §sz!HLIHelpFile.CalculateIsExpandablecCs*ddl}|j\}}|j |¡d}d|S)NrrzHelp reference in %s)Úosr&ÚpathÚsplit)r rEÚfnamer0Úbaser r rrªs zHLIHelpFile.GetTextcCs8|j\}}|rtj}ntj}t t ¡ ¡|||¡dSr) r&Úwin32conZ HELP_CONTEXTZ HELP_FINDERÚwin32apiZWinHelprBZ GetMainFrameZ GetSafeHwnd)r rHr0Úcmdr r rÚTakeDefaultAction±s  zHLIHelpFile.TakeDefaultActioncCsdS)Nér rr r rr*¹szHLIHelpFile.GetBitmapColumnN)rrrr rrMr*r r r rrD¦srDc@seZdZdd„ZdS)ÚHLIRegisteredTypeLibraryc Csnddl}|j\}}g}d}t tjd||f¡}t d¡z’d}zt ||¡}Wntj ylYq¸Yn0t ||¡} z(t  | d¡\} } | tj kr t  | ¡} Wntj yºd} Yn0|dkrÊ| }nä|dkrØ| } nÖzÀt |ƒ} t ||¡}d}zt ||¡}Wntj yYqŒYn0z6t ||¡}t  |d¡\}} | tj krTt  |¡}Wntj ypd}Yn0| | ||f¡|d}qòt |¡Wnty¬Yn0|d}qBWt d¡t |¡nt d¡t |¡0g}| t|ƒ¡|D]d\} }}g}|dkr| |¡| r2| d| ¡d}|rJd d  |¡}| t|d |ƒ¡qü| ¡|S) Nrr"z TypeLib\%s\%srZHELPDIRZFlagsÚwin32z locale=%sz (%s)ú, z Type Library)rEr&rKÚ RegOpenKeyrJÚHKEY_CLASSES_ROOTrBrCÚ RegEnumKeyÚerrorZRegQueryValueExÚ REG_EXPAND_SZÚExpandEnvironmentStringsÚintr.Ú RegCloseKeyÚ ValueErrorr!ÚjoinÚ HLITypeLibÚsort)r rEZclsidstrÚ versionStrZ collectedZhelpPathÚkeyÚnumÚsubKeyZhSubKeyÚvalueÚtypÚflagsr=ZlcidkeyZlcidnumÚplatformZ hplatformrHr1Z extraDescsZ extraDescr r rr¾s€ ÿ              ÿ    z#HLIRegisteredTypeLibrary.GetSubListNr2r r r rrO½srOc@seZdZdd„Zdd„ZdS)ÚHLITypeLibEntrycCsV|j\}}| |¡\}}}}zt| |¡d}WntyHd}Yn0|d|S)NrzUnknown!z - )r&ÚGetDocumentationÚ HLITypeKindsÚGetTypeInfoTypeÚKeyError)r ÚtlbÚindexrÚdocr0ÚhelpFileZtypedescr r rrs   zHLITypeLibEntry.GetTextcCsP|j\}}| |¡\}}}}g}|r6| t |d¡¡|rL| t||fƒ¡|S)NZDoc)r&rgr.rZ HLIDocStringrD)r rkrlrrmr0rnr1r r rrs zHLITypeLibEntry.GetSubListN)rrrrrr r r rrfs rfc@seZdZdd„ZdS)Ú HLICoClassc Cs€t |¡}|j\}}| |¡}| ¡}t|dƒD]H}| |¡}| | |¡¡}| ¡} |  t   | dd| d|f¡¡q2|S)NérzName=%s, Flags = %d) rfrr&Ú GetTypeInfoÚ GetTypeAttrÚrangeZGetImplTypeFlagsZGetRefTypeInfoZGetRefTypeOfImplTyper.rr3) r r1rkrlÚtypeinfoÚattrÚjrdZrefTypeZrefAttrr r rrs    ÿzHLICoClass.GetSubListNr2r r r rrosroc@seZdZddd„Zdd„ZdS)ÚHLITypeLibMethodNcCsd|_t |||¡dS)NZMethod)Z entry_typerfr)r Úobrr r rr-szHLITypeLibMethod.__init__cCsrt |¡}|j\}}| |¡}| ¡}t|dƒD]}| t||fƒ¡q2t|dƒD]}| t||fƒ¡qV|S)NérN) rfrr&rqrrrsr.ÚHLITypeLibPropertyÚHLITypeLibFunction)r r1rkrlrtruÚir r rr1s   zHLITypeLibMethod.GetSubList)N)rrrrrr r r rrw,s rwc@s$eZdZdd„Zdd„Zdd„ZdS)ÚHLITypeLibEnumcCsD|\}}| |¡}| |¡d|_| |j¡d}t |||¡dSr')rqÚ GetVarDescÚidÚGetNamesrfr)r ÚmyitemÚtypelibrlrtrr r rr>s  zHLITypeLibEnum.__init__cCs |jdS)Nz - Enum/Modulerrr r rrEszHLITypeLibEnum.GetTextc Cshg}|j\}}| |¡}| ¡}t|dƒD]6}| |¡}| |d¡d}| t |d|¡¡q,|S)Nryrr) r&rqrrrsr~r€r.rr3) r r1r‚rlrtrurvZvdescrr r rrHs   zHLITypeLibEnum.GetSubListN©rrrrrrr r r rr}=sr}c@s$eZdZdd„Zdd„Zdd„ZdS)rzcCs:|\}}| |¡d|_| |j¡d}t |||¡dSr')r~rr€rr©r rrtrlrr r rrUszHLITypeLibProperty.__init__cCs |jdS)Nz - Propertyrrr r rr[szHLITypeLibProperty.GetTextcCsºg}|j\}}| |j¡}t|ƒdkr@| t |dd…d¡¡| |¡}| t |jd¡¡| t |dd¡¡| t |dd¡¡| t |dd¡¡| t |d d ¡¡|S) Nrú Named Paramsú Dispatch IDZValuerAz Elem Descéz Var FlagsézVar Kind)r&r€rr+r.rr3r~)r r1rtrlÚnamesZvdr r rr^s    zHLITypeLibProperty.GetSubListNrƒr r r rrzTsrzcP@sÈeZdZejdejdejdejdiZej dej dej dej diZ ejd fejd fejd fejd fejd fejdfejdfejdfgZejdejdejdejdejdejdejdejdejdej dej!dej"dej#dej$dej%dej&d ej'd!ej(d"ej)d#ej*d$ej+d%ej,d&ej-d'ej.d(ej/d)ej0d*ej1d+ej2d,ej3d-ej4d.ej5d/ej6d0ej7d1ej8d2ej9d3ej:d4ej;d5ejd8i(Z?ej@d9fejAd:fejBd;fejCd„ZEd?d@„ZFdAdB„ZGdCdD„ZHdEdF„ZIdGS)Hr{ZVirtualz Pure VirtualZStaticÚDispatchZFunctionz Property Getz Property PutzProperty Put by referenceZ RestrictedZSourceZBindablez Request Editz Display Bindz Default BindZHiddenzUses GetLastErrorZEmptyZNULLz Integer 2z Integer 4zReal 4zReal 8ZCYZDateÚStringZ IDispatchÚErrorZBOOLZVariantZIUnknownZDecimalz Integer 1zUnsigned integer 1zUnsigned integer 2zUnsigned integer 4z Integer 8zUnsigned integer 8ZIntegerzUnsigned integerZVoidZHRESULTZPointerZ SafeArrayzC Arrayz User DefinedzPointer to stringzPointer to Wide Stringz File timeZBlobZIStreamZIStoragez Stored objectzStreamed objectz Blob objectZCFZCLSIDZVectorZArrayZByRefZReservedcCs:|\}}| |¡d|_| |j¡d}t |||¡dSr')Ú GetFuncDescrr€rrr„r r rr·szHLITypeLibFunction.__init__cCs |jdS)Nz - Functionrrr r rr½szHLITypeLibFunction.GetTextcCsX|tj@}z|j|}Wnty.d}Yn0|jD]\}}||@r6d||f}q6|S)Nz ?Bad type?z%s(%s))rZ VT_TYPEMASKÚvartypesrjÚ type_flags)r rcZjusttypZtypnameÚflagr>r r rÚMakeReturnTypeNameÀs   z%HLITypeLibFunction.MakeReturnTypeNamecCsTt|ƒtdƒkrF|d}| |¡}|tjkrB|d| |d¡}|S| |¡SdS)Nr rú r)r#ÚMakeReturnTyperÚVT_USERDEFINEDr‘)r ZreturnTypeDescÚfirstÚresultr r rr“Ës  z!HLITypeLibFunction.MakeReturnTypec Csg}|j\}}| |j¡}| t |jd¡¡t|ƒdkrZ| t d |dd…¡d¡¡| |¡}|dr‚| t |dd¡¡|drÆ|d\}}}|  |¡} |r´d| ||f} | t | d¡¡|d D]P} | \}}}|  |¡} |röd | |f} |dur d | |f} | t | d ¡¡qÎz|j |d } Wnt yJd} Yn0| t | d¡¡z|j |d} Wnt yˆd} Yn0| t | d¡¡| t |dd¡¡g} |j D]"\}}||d@r¼|  |¡q¼| rþ| t d | ¡d¡¡|S)Nr†rrQr…zPossible result valuesrpz%s (Flags=%d, default=%s)z Return TyperAz %s (Flags=%d)z%s (Default=%s)ZArgumentr‡ZUnknownz Function Kindrˆz Invoke KindrNzNumber Optional Paramsé zFunction Flags)r&r€rr.rr3r+r[rr“Ú funckindsrjÚ invokekindsÚ funcflags)r r1rtrlr‰ÚfdrcrdÚdefaultÚvalZargDescZfkindZikindZ flagDescsrr>r r rrÕsR              zHLITypeLibFunction.GetSubListN)JrrrrZ FUNC_VIRTUALZFUNC_PUREVIRTUALZ FUNC_STATICZ FUNC_DISPATCHr˜Z INVOKE_FUNCZINVOKE_PROPERTYGETZINVOKE_PROPERTYPUTZINVOKE_PROPERTYPUTREFr™ZFUNCFLAG_FRESTRICTEDZFUNCFLAG_FSOURCEZFUNCFLAG_FBINDABLEZFUNCFLAG_FREQUESTEDITZFUNCFLAG_FDISPLAYBINDZFUNCFLAG_FDEFAULTBINDZFUNCFLAG_FHIDDENZFUNCFLAG_FUSESGETLASTERRORršZVT_EMPTYZVT_NULLZVT_I2ZVT_I4ZVT_R4ZVT_R8ZVT_CYZVT_DATEZVT_BSTRZ VT_DISPATCHZVT_ERRORZVT_BOOLZ VT_VARIANTZ VT_UNKNOWNZ VT_DECIMALZVT_I1ZVT_UI1ZVT_UI2ZVT_UI4ZVT_I8ZVT_UI8ZVT_INTZVT_UINTZVT_VOIDZ VT_HRESULTZVT_PTRZ VT_SAFEARRAYZ VT_CARRAYr”ZVT_LPSTRZ VT_LPWSTRZ VT_FILETIMEZVT_BLOBZ VT_STREAMZ VT_STORAGEZVT_STORED_OBJECTZVT_STREAMED_OBJECTZVT_BLOB_OBJECTZVT_CFZVT_CLSIDrŽZ VT_VECTORZVT_ARRAYZVT_BYREFZ VT_RESERVEDrrrr‘r“rr r r rr{msŒüüø Ø,ü  r{Z EnumerationZRecordZModuleZ InterfacerŠZCoClassZAliasÚUnionc@seZdZdd„ZdS)r\c Cs¸g}| t |jd¡¡zt |j¡}Wn&tjyNt d|j¡gYS0t| ¡ƒD]N}z$| t |  |¡d||fƒ¡Wq\tjy¨| t d¡¡Yq\0q\|  ¡|S)NZFilenamez%s can not be loadedrz The type info can not be loaded!) r.rr3r&rZ LoadTypeLibr$rsZGetTypeInfoCountrhrir])r r1rkr|r r rrs$zHLITypeLib.GetSubListNr2r r r rr\sr\c@s eZdZdZdd„Zdd„ZdS)rz,A tree heading for registered type librariescCsdS)NzRegistered Type Librariesr rr r rr&sz#HLIHeadingRegisterdTypeLibs.GetTextc CsVg}t tjd¡}t d¡zd}zt ||¡}WntjyNYqYn0t ||¡}d}z†d}d}zt ||¡} Wntjy’YqÚYn0z t| ƒ} Wnt y¶d} Yn0| |krÐ| }t  || ¡}|d}qjWt  |¡n t  |¡0|dur|  t || f|ƒ¡|d}q$Wt  |¡t d¡nt  |¡t d¡0| ¡|S)NZTypeLibrrg)rKrRrJrSrBrCrTrUÚfloatrZZ RegQueryValuerYr.rOr]) r r1r_r`ZkeyNamerarZsubNumZ bestVersionr^Z versionFltr r rr)sH             ÿ  z&HLIHeadingRegisterdTypeLibs.GetSubListNr?r r r rr#srTFcCsdddlm}tdƒ}|r8dtjvr8t ¡tj |¡n(t  |¡}|rP|  ¡n|  ¡|  ¡dS)Nr)Úhierlistz COM Browserzpywin.framework.app) Ú pywin.toolsr rÚsysÚmodulesrZ MakeTemplateÚtemplateZ OpenObjectZdynamic_browserZDoModalZ CreateWindowZ ShowWindow)ÚmodalZmdir ÚrootZdlgr r rÚmainTs   r§Ú__main__)r¥z*Warning - exiting with %d/%d objects alive)TF)/r@r¢rrKrJrBr¡rZwin32com.clientrZHLIPythonObjectrrr!r(r)rr/rr9rDrOrfrorwr}rzr{Z TKIND_ENUMZ TKIND_RECORDZ TKIND_MODULEZTKIND_INTERFACEZTKIND_DISPATCHZ TKIND_COCLASSZ TKIND_ALIASZ TKIND_UNIONrhr\rr§rZGetConsoleTitleZ_GetInterfaceCountZniZ_GetGatewayCountZngÚprintr r r rÚsV    J        ø 1