idZddlZddlZddlZddlZ ejn#ej$rddlZYnwxYwddlm Z ej j ddddddgZ dd gZee zZe je jgZGd d ZGd d ZdZdZGddeZdZdZedkr$ejjeeedSdS)a This sample implements a simple IE Button COM server with access to the IWebBrowser2 interface. To demonstrate: * Execute this script to register the server. * Open Pythonwin's Tools -> Trace Collector Debugging Tool, so you can see the output of 'print' statements in this demo. * Open a new IE instance. The toolbar should have a new "scissors" icon, with tooltip text "IE Button" - this is our new button - click it. * Switch back to the Pythonwin window - you should see: IOleCommandTarget::Exec called. This is the button being clicked. Extending this to do something more useful is left as an exercise. Contribtions to this sample to make it a little "friendlier" welcome! N) axcontrolz&{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}SetSiteGetSiteExec QueryStatusceZdZdZdZdZdS)Stubzp this class serves as a method stub, outputting debug info whenever the object is being called. c||_dSN)name)selfr s EC:\PYTHON\_runtimes\venv\Lib\site-packages\win32com/demos/iebutton.py__init__z Stub.__init__Bs  c2td|j|dS)NzSTUB: )printr )rargss r__call__z Stub.__call__Es h 4(((((rN)__name__ __module__ __qualname____doc__rrrrr r ;s< )))))rr cVeZdZdZeZeZej Z dZ dZ dZ dZdZdZdZdZd Zd S) IEButtonz% The actual COM server class IE Button+An example implementation for an IE Button.c|jD]B}t||s0td|zt||t |CdS)Nzproviding default stub for %s)_public_methods_hasattrrsetattrr )rmethods rrzIEButton.__init__Vs]+ 4 4F4(( 45>???fd6ll333 4 4rcg}|D]8\}}|tjtjzz}|||f9|d}n|tjkrd}nd}||fS)Nz IEButton NamezIEButton State)rOLECMDF_SUPPORTEDOLECMDF_ENABLEDappendOLECMDTEXTF_NAME)r pguidCmdGroupprgCmdscmdtextfresultidflagscmdtexts rrzIEButton.QueryStatus]s}  ' 'IB Y093LL LE MM2u+ & & & &  GG3 3 3%GG&GwrcHt||||tddS)NzIOleCommandTarget::Exec called.)r)rr*nCmdID nCmdExecOptpvaIns rrz IEButton.Execns+ mV[%888 /00000rc|r|tj}|tj}t j|dtj |_ dSd|_ dS)Nz&{0002DF05-0000-0000-C000-000000000046}) QueryInterfacerIID_IOleCommandTarget pythoncomIID_IServiceProviderwin32comclientDispatch QueryService IID_IDispatch webbrowser)runknown cmdtargetserviceproviders rrzIEButton.SetSitess{  #..y/NOOI'66y7UVVO&o66,,UDOOO#DOOOrc|jSr ) _reg_clsid_)rs r GetClassIDzIEButton.GetClassIDs rN)rrrr_iebutton_com_interfaces__com_interfaces__iebutton_methods_r!r8CLSCTX_INPROC_SERVER _reg_clsctx_ _button_text_ _tool_tip__icon_ _hot_icon_rrrrrErrrrrIs1)1LM>J FJ444"111 ###      rrcddl}d|jz} ||j|}||dd|j|j}||dd|j|j||dd|jd||dd|jd||d d|j|j||d d|j|j||d d|j|j td dS#t$rtd YdSwxYw)Nr4SOFTWARE\Microsoft\Internet Explorer\Extensions\%38s ButtonTextClsidExtensionCLSIDz&{1FBA04EE-3024-11D2-8F1F-0000F87ABD16}Default VisibleYesToolTipIconHotIconzSet standard toolbar reg keys.z'Couldn't set standard toolbar reg keys.) winregrD CreateKeyHKEY_LOCAL_MACHINE SetValueExREG_SZrKrLrMrNrOSErrorclassobjrY subKeyCLSIDhKeysubKeys rregisterrdsMMM C   0 9;GG"" ,6=(2H    "Av}h6J     '1fm-U    $ 11fmUKKK$ 1fmX=PQQQ$6=(/JJJ$ 1fmX=PQQQ .///// 999 78888889sDD''EEc"ddl}d|jz} ||j|}||d}||d||d||d||d||d||d ||j|t d dS#t$rt d YdSwxYw) NrrPrQrRrSrTrVrWrXz Deleted Standard toolbar regkey.z(Couldn't delete Standard toolbar regkey.)rYrDrZr[ DeleteValue DeleteKeyrr^r_s r unregisterrhs>MMM C    2 9;GG##D,774!12224)))4!23334+++4(((4+++2K@@@ 011111 ::: 8999999:sCC11D Dc*eZdZdZdZdZdZdZdZeZ dS)PyWin32InternetExplorerButtonz&{104B66A9-9E68-49D1-A3F5-94754BE9E0E6}zPyWin32.IEButtonz Test ButtonrrrN) rrrrD _reg_progid_ _reg_desc_rKrLrMrNrrrrjrjs1:K%LJM>J FJJJrrjc.ttdSr )rdrjrrrDllRegisterServerrns *+++++rc.ttdSr )rhrjrrrDllUnregisterServerrps,-----r__main__)finalize_registerfinalize_unregister)rr8win32apir:win32com.server.registerGetConsoleTitleerrorwin32traceutilwin32com.axcontrolrr;gencache EnsureModuleIObjectWithSite_methodsIOleCommandTarget_methodsrHr7IID_IObjectWithSiterFr rrdrhrjrnrprserverUseCommandLinerrrrs(H~)((((( %%&NPQSTVWXXX%i0#]3.1HH # ! ) ) ) ) ) ) ) ); ; ; ; ; ; ; ; |00082228H,,,... z O++%+/,s $55