§
    ÷¢±jo+  ã                   ó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          údC:\Users\johnn\AppData\Local\Programs\Python\Python311\Lib\site-packages\win32com/demos/ietoolbar.pyÚ__init__zWIN32STRUCT.__init__>   s€   € ØˆØ"&Ô"5ð 	 ð 	 ÑˆD�#�wØ"&ˆDŒM˜$ÑØ�cŠzˆzØ˜DÑ ��à˜C‘��ØŸš™œð 	&ð 	&‰IˆD�#Ø"%ˆDŒM˜$ÑÐð	&ð 	&ó    c                 ót   — |                      d¦  «        s|| j        vrt          |¦  «        ‚|| j        |<   d S )NÚ_)Ú
startswithr!   ÚAttributeError)r#   Úattrr)   s      r*   Ú__setattr__zWIN32STRUCT.__setattr__I   sB   € Ø�Š˜sÑ#Ô#ð 	'¨°D´MÐ(AÐ(AÝ  Ñ&Ô&Ð&Ø!ˆŒ�dÑÐÐr,   c                 ó6  — g | _         d}g }| j        D ]è\  }}}| j        |         }|dk    r±d}|€+|                     d¦  «         |                     d¦  «         n›t	          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.toparamN   s  € ØˆŒØˆØˆØ"&Ô"5ð 	ð 	ÑˆD�#�wØ”- Ô%ˆCØ�cŠzˆzØ�Ø�;Ø—K’K ‘N”N�NØ—K’K ‘N”N�N�Nå#œk¨#¨s°T©zÑ:Ô:�GØ—K’K × 3Ò 3Ñ 5Ô 5°aÔ 8Ñ9Ô9Ð9Ø—K’K¥ C¡¤Ñ)Ô)Ð)Ø”K×&Ò& wÑ/Ô/Ð/Ð/à�;Ø!�CØ—’˜CÑ Ô Ð Ø˜‰OˆHˆHÝŒ{˜X˜K­%°©+¬+Ñ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   f   s   € € € € € ðð ð €N€N€Nr,   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__y   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   r   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é   € åÔÝÔ!ñ"åÔ&ñ'õ Ô&ñ'õ Ô#ñ	$õ
 Ô#ñ$õ Ô*ñ+õ Ôñõ Ô$ñ%õ Ô#ñ	$õ Ô(ñ
)ð 	õ Ô)ØØØØØØØØØÝÔØñ
ô 
ˆŒ	õ 	Ô˜TœY­Ô(DÀbÈ!ÑLÔLÐLÐLÐLr,   c                 ó:   — t          j        | j        |¦  «         d S rV   )ro   Ú
ShowWindowrr   )r#   Úmodes     r*   rx   zIEToolbarCtrl.ShowWindow£   s   € ÝÔ˜DœI tÑ,Ô,Ð,Ð,Ð,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Ø˜ŸšÑ)Ô)Ñ)ˆIˆIÝÔ#ØŒI•xÔ-­s°7©|¬|¸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ð 	4ˆFÝ˜4 Ñ(Ô(ð 4ÝÐ5¸Ñ>Ñ?Ô?Ð?Ý˜˜f¥d¨6¡l¤lÑ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   € ØˆLˆLˆLr,   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ˆˆg�v˜v t¨UØ�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ÔHˆIà"×,Ò,Ñ.Ô.ˆJð  ×.Ò.­yÔ/NÑOÔOˆIà'×6Ò6µyÔ7UÑVÔVˆOå&Ø×,Ò,Ø<½iÔ>Uñô ñô ˆDŒOõ )¨Ñ4Ô4ˆDŒLð *¨4Ô+?Ð@Ø! 4Ô#8Ð9Ø% tÔ';Ð<ðˆGð !#ˆDÔåÔ3°JÑ?Ô?ˆFõ �3˜w™<œ<Ñ(Ô(ð Vð V�Ý!™œ�Ø$ QœZ‘
��dØ˜a‘Z�Ø!#�”Ø#%�Ô Ý!)Ô!9�”Ý!)Ô!8�”Ø!%�”Ø04�Ô! &¨1¡*Ñ-Ø”×'Ò'¨Ñ/Ô/Ð/Ø×"Ò" 4Ô#?ÅÔATÑUÔUÐUÐUðVð Vð #ˆDŒOˆOˆOr,   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ÐØ*ÐØÔ1€Là:€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Ú   0  s   € Ý€H€H€Hr,   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æ   5  sÚ   € Ý€Hð
ÝÐ-Ñ.Ô.Ð.ÝÔÝÔ%Ð'Xñ
ô 
ˆõ Ô"Ø�(Ô&¨­6Ô+<¸eñ
ô 
ˆõ 	Ø8¸DÀ(Ô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é   N  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ð €Ô Ð>ÀÀ1ÀaÑ HÔ HÐ Hð #�OÐ Ø@Ð@Ð@Ð Ø!Ð#9Ð:Ð ØOÐOÐOÐ Ø$ iÐ0Ð ØPÐPÐPÐ ð Øñàñð ñð ñ	ð
 ñð ð 
ÔØÔ!ØÔ ØÔ#ð	Ð ð&7ð &7ð &7ð &7ð &7ñ &7ô &7ð &7ðR	ð 	ð 	ð 	ð 	ˆ{ñ 	ô 	ð 	ð)ð )ð )ð )ð )ñ )ô )ð )ð/ð /ð /ð /ð /ñ /ô /ð /ðdz
ð z
ð z
ð z
ð z
ñ z
ô z
ð z
ð|ð ð ð

ð 
ð 
ð2/ð /ð /ð( ˆzÒÐØ#Ð#Ð#Ð#à„OÔ×+Ò+¨IÑ6Ô6Ð6ð ˜œÐ!Ð!ØÐÑÔÐÐÐàÐÑÔÐÐÐð ÐÐÐÐÐr,   