
    %
i+                     j   d Z ddlZddlZddlZddlZddlZddlZddlZddlZddl	Z	ddl
Z
ddlmZ ddlmZmZ ddlmZ ddlmZ  ej        dddd           d	gZg d
ZddgZg dZddgZg dZeez   ez   ez   ez   ez   Zej        ej        ej        ej        gZ  G d d          Z! G d de!          Z" G d d          Z# G d d          Z$ G d d          Z%d Z&d Z'd Z(e)dk    rDddl*Zej+        j,        -                    e%           dej.        v r e(             dS  e'             dS ddl/Z/dS ) 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                        e Zd Zd Zd Zd ZdS )WIN32STRUCTc                     d}| j         D ]!\  }}}d | j        |<   |dk    r|dz  }||z  }"|                                D ]\  }}|| j        |<   d S )N zpi)_struct_items___dict__items)selfkwfull_fmtnamefmtdefaultvals          C:\Users\Dell Inspiron 16\Desktop\tws\AgrotaPowerBi\back-agrota-powerbi\mcp-client-agrota\venv\Lib\site-packages\win32com/demos/ietoolbar.py__init__zWIN32STRUCT.__init__@   s    "&"5 	  	 D#w"&DM$czzD C 	& 	&ID#"%DM$	& 	&    c                 t    |                     d          s|| j        vrt          |          || j        |<   d S )N_)
startswithr!   AttributeError)r#   attrr)   s      r*   __setattr__zWIN32STRUCT.__setattr__K   sB    s## 	'DM(A(A &&&!dr,   c                 6   g | _         d}g }| j        D ]\  }}}| j        |         }|dk    rd}|+|                    d           |                    d           nt	          j        d|dz             }|                    |                                d                    |                    t          |                     | j                             |           n||}|                    |           ||z  }t          j        |ft          |          z    S )Nr   r   Pir   c )
_buffsr    r!   appendarraybuffer_infolenstructpacktuple)r#   r%   valsr&   r'   r(   r)   str_bufs           r*   toparamzWIN32STRUCT.toparamP   s   "&"5 	 	D#w-%Cczz;KKNNNKKNNNN#k#sTz::GKK 3 3 5 5a 8999KKC)))K&&w////;!CC   OHH{XK%++566r,   N)__name__
__module____qualname__r+   r2   rA    r,   r*   r   r   ?   sA        	& 	& 	&" " "
7 7 7 7 7r,   r   c                       e Zd Zg dZdS )TBBUTTON))iBitmapir   )	idCommandrI   r   )fsStateBr   )fsStylerL   r   )	bReservedHr   )dwDataIr   )iStringr   NN)rB   rC   rD   r    rE   r,   r*   rG   rG   h   s          NNNr,   rG   c                       e Zd ZdZd Zd ZdS )Stubzp
    this class serves as a method stub,
    outputting debug info whenever the object
    is being called.
    c                     || _         d S N)r&   )r#   r&   s     r*   r+   zStub.__init__{   s    			r,   c                 2    t          d| j        |           d S )NzSTUB: )printr&   )r#   argss     r*   __call__zStub.__call__~   s    h	4(((((r,   N)rB   rC   rD   __doc__r+   rZ   rE   r,   r*   rT   rT   t   s<           ) ) ) ) )r,   rT   c                   *    e Zd ZdZd Zd Zd Zd ZdS )IEToolbarCtrlzQ
    a tiny wrapper for our winapi-based
    toolbar control implementation.
    c                    t           j        t           j        z  t           j        z  t           j        z  t
          j        z  t
          j        z  t
          j        z  t
          j	        z  t
          j
        z  t
          j        z  t
          j        z  }t          j        dd |dddd|dt          j        d           | _        t          j        | j        t
          j        dd           d S )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+   zIEToolbarCtrl.__init__   s    !"&' &' #	$
 #$ *+  $% #	$ (
) 	 )
 
	 	TY(Db!LLLLLr,   c                 :    t          j        | j        |           d S rV   )ro   
ShowWindowrr   )r#   modes     r*   rx   zIEToolbarCtrl.ShowWindow   s    DIt,,,,,r,   c                     d}|D ]}||                                 z  }t          j        | j        t          j        t          |          |          S )Nr   )rA   ro   rs   rr   rg   TB_ADDBUTTONSr;   )r#   buttons	tbbuttonsbuttons       r*   
AddButtonszIEToolbarCtrl.AddButtons   sU    	 	* 	*F)))II#Ix-s7||Y
 
 	
r,   c                     | j         S rV   )rr   r#   s    r*   GetSafeHwndzIEToolbarCtrl.GetSafeHwnd   s
    yr,   N)rB   rC   rD   r[   r+   rx   r   r   rE   r,   r*   r]   r]      s]         
M M M:- - -
 
 
    r,   r]   c                       e Zd ZdZeZeZej	        Z
dZdZdZd Zd Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd ZdS )	IEToolbarz%
    The actual COM server class
    z&{F21202A2-959A-4149-B1C3-68B9013F3335}zPyWin32.IEToolbarPyWin32 IE Toolbarc                     | j         D ]B}t          | |          s0t          d|z             t          | |t	          |                     Cd S )Nzproviding default stub for %s)_public_methods_hasattrrX   setattrrT   )r#   methods     r*   r+   zIEToolbar.__init__   s]    + 	4 	4F4(( 45>???fd6ll333	4 	4r,   c                 4    | j                                         S rV   )toolbarr   r   s    r*   r   zIEToolbar.GetWindow   s    |'')))r,   c                     d S rV   rE   )r#   streams     r*   r   zIEToolbar.Load       r,   c                     d S rV   rE   )r#   pStreamfClearDirtys      r*   r   zIEToolbar.Save   r   r,   c                 
    | ` d S rV   )r   )r#   
dwReserveds     r*   r   zIEToolbar.CloseDW   s    LLLr,   c                     |r&| j                             t          j                   d S | j                             t          j                   d S rV   )r   rx   rb   SW_SHOWSW_HIDE)r#   bShows     r*   r   zIEToolbar.ShowDW   sH     	6L##H$455555L##H$455555r,   c                 X    t          d           | j                            d           d S )Nzfirst!z#https://github.com/mhammond/pywin32)rX   
webbrowser	Navigate2r   s    r*   on_first_buttonzIEToolbar.on_first_button   s*    h!!"GHHHHHr,   c                 $    t          d           d S )Nzsecond!rX   r   s    r*   on_second_buttonzIEToolbar.on_second_button   s    ir,   c                 $    t          d           d S )Nzthird!r   r   s    r*   on_third_buttonzIEToolbar.on_third_button   s    hr,   c                     |\  }}}}}}|| j                                         k    r | j        |                      d S d S rV   )r   r   _command_map)r#   rY   rr   messagewparamlparamtimepoints           r*   toolbar_command_handlerz!IEToolbar.toolbar_command_handler   sQ    592gvvtUT\--////%Df%''''' 0/r,   c                 v   |r|                     t          j                  }|                                }|                     t          j                  }|                     t          j                  }t          |                    dt          j	                            | _
        t          |          | _        d| j        fd| j        fd| j        fg}i | _        t#          j        |          }t'          t)          |                    D ]}t+                      }	||         \  }
}d|z   }d|	_        ||	_        t0          j        |	_        t0          j        |	_        |
|	_        || j        d|z   <   | j                            |	           |                    | j         tB          j"                   d S d | _
        d S )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   r]   r   r   r   r   r   win32uiCreateWindowFromHandleranger;   rG   rH   rJ   rg   TBSTATE_ENABLEDrK   TBSTYLE_BUTTONrM   rR   r   HookMessager   rb   
WM_COMMAND)r#   unknown	olewindowru   	cmdtargetserviceproviderr|   windowrI   r~   r&   funcids                r*   r   zIEToolbar.SetSite   s    -	#..y/GHHI",,..J  ..y/NOOI'66y7UVVO&,,<i>U  DO )44DL *4+?@!4#89%t';<G !#D3J??F 3w<<(( V V!$QZ
daZ!##% !)!9!)!8!%04!&1*-''///""4#?ATUUUUV V #DOOOr,   c                     | j         S rV   )_reg_clsid_r   s    r*   r   zIEToolbar.GetClassID  s    r,   c                 :    d}d}d}d}d}t           }	d}
||||||	|
fS )N)r      )i  r   )r   r   r   r   r   )r#   dwBandId
dwViewModedwMask	ptMinSize	ptMaxSize
ptIntegralptActualwszTitledwModeFlagscrBkgnds              r*   r
   zIEToolbar.GetBandInfo  sD    		
'*
 	
r,   N)rB   rC   rD   r[   _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
   rE   r,   r*   r   r      s
         2*1L:K&L%J4 4 4* * *      6 6 6I I I    ( ( (
.# .# .#`     
 
 
 
 
r,   r   c                     t           }d S rV   )r   )bInstallcmdLinecomclasss      r*   
DllInstallr   2  s    HHHr,   c                  F   t           } 	 t          d           t          j        t          j        d          }t          j        || j        dt          j        d          }t          d|| j        fz             d S # t          $ r t          d|| j        fz             Y d S w xY w)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   rX   winreg	CreateKeyHKEY_LOCAL_MACHINE
SetValueExr   
REG_BINARYOSError)r   hkeysubKeys      r*   DllRegisterServerr   7  s    H
-...%'X
 
 "(&6+<e
 
 	8D(BV;WW	
 	
 	
 	
 	
  
 
 
AX)*+	
 	
 	
 	
 	
 	

s   AA9 9#B B c                     t           } 	 t          d           t          j        t          j        d          }t          j        || j                   t          d           d S # t          $ r t          d|| j        fz             Y d S w xY w)NzTrying to unregister Toolbar.
r   zDeleting reg key succeeded.
z3Couldn't delete registry value.
hkey: %d	CLSID: %s
)r   rX   r   r   r   DeleteValuer   r   )r   r   s     r*   DllUnregisterServerr   P  s    H//000%'X
 
 	4!5666 	-.....  
 
 
DX)*+	
 	
 	
 	
 	
 	

s   AA" "#B	B	__main__z--unregister)0r[   r9   r<   sysr   rg   r   win32comrb   ro   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   rG   rT   r]   r   r   r   r   rB   win32com.server.registerserverregisterUseCommandLineargvwin32traceutilrE   r,   r*   <module>r     s      


           ( ( ( ( ( ( . . . . . . . .             8 8 8 8 8 8  >1a H H H #O @@@ !#9: OOO $i0 PPP    	
   
! #	 &7 &7 &7 &7 &7 &7 &7 &7R	 	 	 	 	{ 	 	 	) ) ) ) ) ) ) )/ / / / / / / /dz
 z
 z
 z
 z
 z
 z
 z
|  

 
 
2/ / /( z####O++I666 !! r,   