
    	h+                        S r SSKrSSKrSSKrSSKrSSKrSSKrSSKrSSKrSSK	r	SSK
r
SSKJr  SSKJrJr  SSKJr  SSKJr  \R(                  " SSSS5        S	/r/ S
QrSS/r/ SQrSS/r/ SQr\\-   \-   \-   \-   \-   r\R8                  \R:                  \R<                  \R>                  /r  " S S5      r! " S S\!5      r" " S S5      r# " S S5      r$ " S S5      r%S r&S r'S r(\)S:X  aI  SSK*r\RV                  RX                  R[                  \%5        S\R\                  ;   a  \(" 5         g\'" 5         gSSK/r/g) z
This sample implements a simple IE Toolbar COM server
supporting Windows XP styles and access to
the IWebBrowser2 interface.

It also demonstrates how to hijack the parent window
to catch WM_COMMAND messages.
    N)	axcontrol)Dispatchgencache)shellDBIMF_VARIABLEHEIGHTz&{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}   GetBandInfo)ShowDWCloseDWResizeBorderDW	GetWindowContextSensitiveHelp)UIActivateIO
HasFocusIOTranslateAcceleratorIOSetSiteGetSite)
GetClassIDIsDirtyLoadSave
GetSizeMaxc                   &    \ rS rSrS rS rS rSrg)WIN32STRUCT?   c                     SnU R                    H&  u  p4nS U R                  U'   US:X  a  US-  nM"  X$-  nM(     UR                  5        H  u  p6X`R                  U'   M     g )N zpi)_struct_items___dict__items)selfkwfull_fmtnamefmtdefaultvals          kC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\win32com/demos/ietoolbar.py__init__WIN32STRUCT.__init__@   sb    "&"5"5Dw"&DMM$czD  #6 ID"%MM$ $    c                     UR                  S5      (       d  XR                  ;  a  [        U5      eX R                  U'   g )N_)
startswithr"   AttributeError)r$   attrr*   s      r+   __setattr__WIN32STRUCT.__setattr__K   s1    s##MM(A &&!dr.   c                    / U l         Sn/ nU R                   H  u  p4nU R                  U   nUS:X  a  SnUc#  UR                  S5        UR                  S5        O[        R                  " SUS-   5      nUR                  UR                  5       S   5        UR                  [        U5      5        U R                   R                  U5        OUc  UnUR                  U5        X-  nM     [        R                  " U4[        U5      -   6 $ )Nr   r   Pir   c )
_buffsr!   r"   appendarraybuffer_infolenstructpacktuple)r$   r&   valsr'   r(   r)   r*   str_bufs           r+   toparamWIN32STRUCT.toparamP   s    "&"5"5Dw--%Ccz;KKNKKN#kk#sTz:GKK 3 3 5a 89KKC)KK&&w/;!CC OH! #6" {{XK%+566r.   )r:   N)__name__
__module____qualname____firstlineno__r,   r4   rD   __static_attributes__ r.   r+   r   r   ?   s    	&"
7r.   r   c                       \ rS rSr/ SQrSrg)TBBUTTONh   ))iBitmapir   )	idCommandrP   r   )fsStateBr   )fsStylerS   r   )	bReservedHr   )dwDataIr   )iStringr   NrK   N)rF   rG   rH   rI   r!   rJ   rK   r.   r+   rM   rM   h   s	    Nr.   rM   c                   $    \ rS rSrSrS rS rSrg)Stubt   z`
this class serves as a method stub,
outputting debug info whenever the object
is being called.
c                     Xl         g Nr'   )r$   r'   s     r+   r,   Stub.__init__{   s    	r.   c                 2    [        SU R                  U5        g )NzSTUB: )printr'   )r$   argss     r+   __call__Stub.__call__~   s    h		4(r.   r_   N)rF   rG   rH   rI   __doc__r,   rd   rJ   rK   r.   r+   r[   r[   t   s    )r.   r[   c                   0    \ rS rSrSrS rS rS rS rSr	g)	IEToolbarCtrl   zE
a tiny wrapper for our winapi-based
toolbar control implementation.
c                 @   [         R                  [         R                  -  [         R                  -  [         R                  -  [
        R                  -  [
        R                  -  [
        R                  -  [
        R                  -  [
        R                  -  [
        R                  -  [
        R                  -  n[        R                  " SS USSSSUS[        R                  S 5      U l        [        R"                  " U R                   [
        R$                  SS5        g )NToolbarWindow32r   d      )win32conWS_CHILD
WS_VISIBLEWS_CLIPSIBLINGSWS_CLIPCHILDRENcommctrlTBSTYLE_LISTTBSTYLE_FLATTBSTYLE_TRANSPARENTCCS_TOPCCS_NODIVIDERCCS_NORESIZECCS_NOPARENTALIGNwin32guiCreateWindow	dllhandlehwndSendMessageTB_BUTTONSTRUCTSIZE)r$   
hwndparentstyless      r+   r,   IEToolbarCtrl.__init__   s   !!"&&' &&' ##	$
 ##$ **+  $$% ##	$ ((
) 	 ))
	 	TYY(D(Db!Lr.   c                 F    [         R                  " U R                  U5        g r^   )r{   
ShowWindowr~   )r$   modes     r+   r   IEToolbarCtrl.ShowWindow   s    DIIt,r.   c                     SnU H  nX#R                  5       -  nM     [        R                  " U R                  [        R
                  [        U5      U5      $ )Nr   )rD   r{   r   r~   rs   TB_ADDBUTTONSr>   )r$   buttons	tbbuttonsbuttons       r+   
AddButtonsIEToolbarCtrl.AddButtons   sJ    	F))I ##IIx--s7|Y
 	
r.   c                     U R                   $ r^   r~   r$   s    r+   GetSafeHwndIEToolbarCtrl.GetSafeHwnd   s    yyr.   r   N)
rF   rG   rH   rI   rf   r,   r   r   r   rJ   rK   r.   r+   rh   rh      s    
M:-
r.   rh   c                       \ rS rSrSr\r\r\	R                  rSrSrSrS rS rS rS	 rS
 rS rS rS rS rS rS rS rS rSrg)	IEToolbar   z
The actual COM server class
z&{F21202A2-959A-4149-B1C3-68B9013F3335}zPyWin32.IEToolbarPyWin32 IE Toolbarc                     U R                    H8  n[        X5      (       a  M  [        SU-  5        [        X[	        U5      5        M:     g )Nzproviding default stub for %s)_public_methods_hasattrrb   setattrr[   )r$   methods     r+   r,   IEToolbar.__init__   s9    ++F4((5>?d6l3 ,r.   c                 6    U R                   R                  5       $ r^   )toolbarr   r   s    r+   r   IEToolbar.GetWindow   s    ||''))r.   c                     g r^   rK   )r$   streams     r+   r   IEToolbar.Load       r.   c                     g r^   rK   )r$   pStreamfClearDirtys      r+   r   IEToolbar.Save   r   r.   c                     U ? g r^   )r   )r$   
dwReserveds     r+   r   IEToolbar.CloseDW   s    Lr.   c                     U(       a*  U R                   R                  [        R                  5        g U R                   R                  [        R                  5        g r^   )r   r   rn   SW_SHOWSW_HIDE)r$   bShows     r+   r   IEToolbar.ShowDW   s5    LL##H$4$45LL##H$4$45r.   c                 P    [        S5        U R                  R                  S5        g )Nzfirst!z#https://github.com/mhammond/pywin32)rb   
webbrowser	Navigate2r   s    r+   on_first_buttonIEToolbar.on_first_button   s    h!!"GHr.   c                     [        S5        g )Nzsecond!rb   r   s    r+   on_second_buttonIEToolbar.on_second_button   s
    ir.   c                     [        S5        g )Nzthird!r   r   s    r+   on_third_buttonIEToolbar.on_third_button   s	    hr.   c                 t    Uu  p#pEpgXPR                   R                  5       :X  a  U R                  U   " 5         g g r^   )r   r   _command_map)r$   rc   r~   messagewparamlparamtimepoints           r+   toolbar_command_handler!IEToolbar.toolbar_command_handler   s7    592vt\\--//f%' 0r.   c                    U(       Ga  UR                  [        R                  5      nUR                  5       nUR                  [        R
                  5      nUR                  [        R                  5      n[        UR                  S[        R                  5      5      U l
        [        U5      U l        SU R                  4SU R                  4SU R                  4/n0 U l        ["        R$                  " U5      n['        [)        U5      5       H  n[+        5       n	Xh   u  pSU-   nSU	l        Xl        [0        R2                  U	l        [0        R6                  U	l        Xl        XR                   SU-   '   U R                  R=                  U	5        UR?                  U R@                  [B        RD                  5        M     g S U l
        g )Nz&{0002DF05-0000-0000-C000-000000000046}zVisit PyWin32 HomepagezAnother ButtonzYet Another ButtoniDD  )#QueryInterface	pythoncomIID_IOleWindowr   r   IID_IOleCommandTargetIID_IServiceProviderr   QueryServiceIID_IDispatchr   rh   r   r   r   r   r   win32uiCreateWindowFromHandleranger>   rM   rO   rQ   rs   TBSTATE_ENABLEDrR   TBSTYLE_BUTTONrT   rY   r   HookMessager   rn   
WM_COMMAND)r$   unknown	olewindowr   	cmdtargetserviceproviderr   windowrP   r   r'   funcids                r+   r   IEToolbar.SetSite   sz   ..y/G/GHI",,.J  ..y/N/NOI'66y7U7UVO&,,<i>U>UDO )4DL *4+?+?@!4#8#89%t';';<G !#D33J?F 3w<(!$Z
aZ!##% !)!9!9!)!8!8!%04!!&1*-''/""4#?#?ATATU ) #DOr.   c                     U R                   $ r^   )_reg_clsid_r   s    r+   r   IEToolbar.GetClassID  s    r.   c                 8    SnSnSnSnSn[         n	Sn
UUUUUU	U
4$ )N)r      )i  r   )r   r   r   r   r   )r$   dwBandId
dwViewModedwMask	ptMinSize	ptMaxSize
ptIntegralptActualwszTitledwModeFlagscrBkgnds              r+   r
   IEToolbar.GetBandInfo  sD    		
'*
 	
r.   )r   r   r   N)rF   rG   rH   rI   rf   _ietoolbar_com_interfaces__com_interfaces__ietoolbar_methods_r   r   CLSCTX_INPROC_SERVER_reg_clsctx_r   _reg_progid_
_reg_desc_r,   r   r   r   r   r   r   r   r   r   r   r   r
   rJ   rK   r.   r+   r   r      sr     2*11L:K&L%J4*6I(
.#` 
r.   r   c                     [         ng r^   )r   )bInstallcmdLinecomclasss      r+   
DllInstallr   2  s    Hr.   c                  Z   [         n  [        S5        [        R                  " [        R                  S5      n[        R
                  " XR                  S[        R                  S5      n[        SXR                  4-  5        g ! [         a    [        SWU R                  4-  5         g f = f)NzTrying to register Toolbar.
,SOFTWARE\Microsoft\Internet Explorer\Toolbarr       z'Set registry value.
hkey: %d	CLSID: %s
z0Couldn't set registry value.
hkey: %d	CLSID: %s
)	r   rb   winreg	CreateKeyHKEY_LOCAL_MACHINE
SetValueExr   
REG_BINARYOSError)r   hkeysubKeys      r+   DllRegisterServerr  7  s    H
-.%%'X
 ""&&6+<+<e
 	8DBVBV;WW	
  
AX))*+	

s   A!B $B*)B*c                     [         n  [        S5        [        R                  " [        R                  S5      n[        R
                  " XR                  5        [        S5        g ! [         a    [        SWU R                  4-  5         g f = f)NzTrying to unregister Toolbar.
r   zDeleting reg key succeeded.
z3Couldn't delete registry value.
hkey: %d	CLSID: %s
)r   rb   r   r   r   DeleteValuer   r  )r   r  s     r+   DllUnregisterServerr  P  s    H//0%%'X
 	4!5!56 	-.  
DX))*+	

s   AA$ $$B
B__main__z--unregister)0rf   r<   r?   sysr   rs   r   win32comrn   r{   r   win32com.axcontrolr   win32com.clientr   r   win32com.shellr   win32com.shell.shellconr   EnsureModuleIDeskBand_methodsIDockingWindow_methodsIOleWindow_methodsIInputObject_methodsIObjectWithSite_methodsIPersistStream_methodsr   IID_IDeskBandIID_IObjectWithSiteIID_IPersistStreamr   r   r   rM   r[   rh   r   r   r  r  rF   win32com.server.registerserverregisterUseCommandLineargvwin32traceutilrK   r.   r+   <module>r      st             ( .   8 	  >1a H #O @ !#9: O $i0 P    	
   
!!  ##	 &7 &7R	{ 	) )/ /dz
 z
|

2/( z#OO++I6 ! r.   