1 #----------------------------------------------------------------------
3 # Purpose: A class that allows the use of the IE web browser
8 # Created: 22-March-2004
10 # Copyright: (c) 2004 by Total Control Software
11 # Licence: wxWindows license
12 #----------------------------------------------------------------------
14 # This module was originally generated by the
15 # wx.activex.GernerateAXModule class but has been tweaked somewhat as
21 clsID
= '{8856F961-340A-11D0-A96B-00C04FD705A2}'
22 progID
= 'Shell.Explorer.2'
25 # Flags to be used with the RefreshPage method
29 REFRESH_COMPLETELY
= 3
31 # Flags to be used with LoadUrl, Navigate, Navigate2 methods
32 NAV_OpenInNewWindow
= 0x1
34 NAV_NoReadFromCache
= 0x4
35 NAV_NoWriteToCache
= 0x8
36 NAV_AllowAutosearch
= 0x10
42 # Create eventTypes and event binders
43 wxEVT_StatusTextChange
= wx
.activex
.RegisterActiveXEvent('StatusTextChange')
44 wxEVT_ProgressChange
= wx
.activex
.RegisterActiveXEvent('ProgressChange')
45 wxEVT_CommandStateChange
= wx
.activex
.RegisterActiveXEvent('CommandStateChange')
46 wxEVT_DownloadBegin
= wx
.activex
.RegisterActiveXEvent('DownloadBegin')
47 wxEVT_DownloadComplete
= wx
.activex
.RegisterActiveXEvent('DownloadComplete')
48 wxEVT_TitleChange
= wx
.activex
.RegisterActiveXEvent('TitleChange')
49 wxEVT_PropertyChange
= wx
.activex
.RegisterActiveXEvent('PropertyChange')
50 wxEVT_BeforeNavigate2
= wx
.activex
.RegisterActiveXEvent('BeforeNavigate2')
51 wxEVT_NewWindow2
= wx
.activex
.RegisterActiveXEvent('NewWindow2')
52 wxEVT_NavigateComplete2
= wx
.activex
.RegisterActiveXEvent('NavigateComplete2')
53 wxEVT_DocumentComplete
= wx
.activex
.RegisterActiveXEvent('DocumentComplete')
54 wxEVT_Quit
= wx
.activex
.RegisterActiveXEvent('OnQuit')
55 wxEVT_Visible
= wx
.activex
.RegisterActiveXEvent('OnVisible')
56 wxEVT_ToolBar
= wx
.activex
.RegisterActiveXEvent('OnToolBar')
57 wxEVT_MenuBar
= wx
.activex
.RegisterActiveXEvent('OnMenuBar')
58 wxEVT_StatusBar
= wx
.activex
.RegisterActiveXEvent('OnStatusBar')
59 wxEVT_FullScreen
= wx
.activex
.RegisterActiveXEvent('OnFullScreen')
60 wxEVT_TheaterMode
= wx
.activex
.RegisterActiveXEvent('OnTheaterMode')
61 wxEVT_WindowSetResizable
= wx
.activex
.RegisterActiveXEvent('WindowSetResizable')
62 wxEVT_WindowSetLeft
= wx
.activex
.RegisterActiveXEvent('WindowSetLeft')
63 wxEVT_WindowSetTop
= wx
.activex
.RegisterActiveXEvent('WindowSetTop')
64 wxEVT_WindowSetWidth
= wx
.activex
.RegisterActiveXEvent('WindowSetWidth')
65 wxEVT_WindowSetHeight
= wx
.activex
.RegisterActiveXEvent('WindowSetHeight')
66 wxEVT_WindowClosing
= wx
.activex
.RegisterActiveXEvent('WindowClosing')
67 wxEVT_ClientToHostWindow
= wx
.activex
.RegisterActiveXEvent('ClientToHostWindow')
68 wxEVT_SetSecureLockIcon
= wx
.activex
.RegisterActiveXEvent('SetSecureLockIcon')
69 wxEVT_FileDownload
= wx
.activex
.RegisterActiveXEvent('FileDownload')
70 wxEVT_NavigateError
= wx
.activex
.RegisterActiveXEvent('NavigateError')
71 wxEVT_PrintTemplateInstantiation
= wx
.activex
.RegisterActiveXEvent('PrintTemplateInstantiation')
72 wxEVT_PrintTemplateTeardown
= wx
.activex
.RegisterActiveXEvent('PrintTemplateTeardown')
73 wxEVT_UpdatePageStatus
= wx
.activex
.RegisterActiveXEvent('UpdatePageStatus')
74 wxEVT_PrivacyImpactedStateChange
= wx
.activex
.RegisterActiveXEvent('PrivacyImpactedStateChange')
76 EVT_StatusTextChange
= wx
.PyEventBinder(wxEVT_StatusTextChange
, 1)
77 EVT_ProgressChange
= wx
.PyEventBinder(wxEVT_ProgressChange
, 1)
78 EVT_CommandStateChange
= wx
.PyEventBinder(wxEVT_CommandStateChange
, 1)
79 EVT_DownloadBegin
= wx
.PyEventBinder(wxEVT_DownloadBegin
, 1)
80 EVT_DownloadComplete
= wx
.PyEventBinder(wxEVT_DownloadComplete
, 1)
81 EVT_TitleChange
= wx
.PyEventBinder(wxEVT_TitleChange
, 1)
82 EVT_PropertyChange
= wx
.PyEventBinder(wxEVT_PropertyChange
, 1)
83 EVT_BeforeNavigate2
= wx
.PyEventBinder(wxEVT_BeforeNavigate2
, 1)
84 EVT_NewWindow2
= wx
.PyEventBinder(wxEVT_NewWindow2
, 1)
85 EVT_NavigateComplete2
= wx
.PyEventBinder(wxEVT_NavigateComplete2
, 1)
86 EVT_DocumentComplete
= wx
.PyEventBinder(wxEVT_DocumentComplete
, 1)
87 EVT_Quit
= wx
.PyEventBinder(wxEVT_Quit
, 1)
88 EVT_Visible
= wx
.PyEventBinder(wxEVT_Visible
, 1)
89 EVT_ToolBar
= wx
.PyEventBinder(wxEVT_ToolBar
, 1)
90 EVT_MenuBar
= wx
.PyEventBinder(wxEVT_MenuBar
, 1)
91 EVT_StatusBar
= wx
.PyEventBinder(wxEVT_StatusBar
, 1)
92 EVT_FullScreen
= wx
.PyEventBinder(wxEVT_FullScreen
, 1)
93 EVT_TheaterMode
= wx
.PyEventBinder(wxEVT_TheaterMode
, 1)
94 EVT_WindowSetResizable
= wx
.PyEventBinder(wxEVT_WindowSetResizable
, 1)
95 EVT_WindowSetLeft
= wx
.PyEventBinder(wxEVT_WindowSetLeft
, 1)
96 EVT_WindowSetTop
= wx
.PyEventBinder(wxEVT_WindowSetTop
, 1)
97 EVT_WindowSetWidth
= wx
.PyEventBinder(wxEVT_WindowSetWidth
, 1)
98 EVT_WindowSetHeight
= wx
.PyEventBinder(wxEVT_WindowSetHeight
, 1)
99 EVT_WindowClosing
= wx
.PyEventBinder(wxEVT_WindowClosing
, 1)
100 EVT_ClientToHostWindow
= wx
.PyEventBinder(wxEVT_ClientToHostWindow
, 1)
101 EVT_SetSecureLockIcon
= wx
.PyEventBinder(wxEVT_SetSecureLockIcon
, 1)
102 EVT_FileDownload
= wx
.PyEventBinder(wxEVT_FileDownload
, 1)
103 EVT_NavigateError
= wx
.PyEventBinder(wxEVT_NavigateError
, 1)
104 EVT_PrintTemplateInstantiation
= wx
.PyEventBinder(wxEVT_PrintTemplateInstantiation
, 1)
105 EVT_PrintTemplateTeardown
= wx
.PyEventBinder(wxEVT_PrintTemplateTeardown
, 1)
106 EVT_UpdatePageStatus
= wx
.PyEventBinder(wxEVT_UpdatePageStatus
, 1)
107 EVT_PrivacyImpactedStateChange
= wx
.PyEventBinder(wxEVT_PrivacyImpactedStateChange
, 1)
110 # For this there are a few special methods implemented in C++ in the
111 # IEHtmlWindowBase class, so derive from it instead of ActiveXWindow.
112 class IEHtmlWindow(wx
.activex
.IEHtmlWindowBase
):
113 def __init__(self
, parent
, id=-1, pos
=wx
.DefaultPosition
,
114 size
=wx
.DefaultSize
, style
=0, name
='IEHtmlWindow', ID
=-1):
115 # in case the old 'ID' param is used as a keyword
119 wx
.activex
.IEHtmlWindowBase
.__init
__(self
, parent
,
120 wx
.activex
.CLSID('{8856F961-340A-11D0-A96B-00C04FD705A2}'),
121 id, pos
, size
, style
, name
)
124 # Methods from IEHtmlWindowBase. Redirected from here just for
125 # the sake of completeness...
126 def LoadString(self
, html
):
127 """Load the html document from a string"""
128 return wx
.activex
.IEHtmlWindowBase
.LoadString(self
, html
)
131 def LoadStream(self
, stream
):
133 Load the html document from a wx.InputStream or a Python
136 return wx
.activex
.IEHtmlWindowBase
.LoadStream(self
, stream
)
139 def LoadUrl(self
, URL
, Flags
=0):
140 """Load the document from url."""
141 return self
.Navigate2(URL
, Flags
)
144 def GetStringSelection(self
, asHTML
=True):
146 Returns the contents of the selected portion of the document as
147 either html or plain text.
149 return wx
.activex
.IEHtmlWindowBase
.GetStringSelection(self
, asHTML
)
152 def GetText(self
, asHTML
=True):
154 Returns the contents of the the html document as either html or plain text.
156 return wx
.activex
.IEHtmlWindowBase
.GetText(self
, asHTML
)
159 def SetCharset(self
, charset
):
161 return wx
.activex
.IEHtmlWindowBase
.SetCharset(self
, charset
)
164 # Methods exported by the ActiveX object
165 def QueryInterface(self
, riid
):
166 return self
.CallAXMethod('QueryInterface', riid
)
169 return self
.CallAXMethod('AddRef')
172 return self
.CallAXMethod('Release')
174 def GetTypeInfoCount(self
):
175 return self
.CallAXMethod('GetTypeInfoCount')
177 def GetTypeInfo(self
, itinfo
, lcid
):
178 return self
.CallAXMethod('GetTypeInfo', itinfo
, lcid
)
180 def GetIDsOfNames(self
, riid
, rgszNames
, cNames
, lcid
):
181 return self
.CallAXMethod('GetIDsOfNames', riid
, rgszNames
, cNames
, lcid
)
183 def Invoke(self
, dispidMember
, riid
, lcid
, wFlags
, pdispparams
):
184 return self
.CallAXMethod('Invoke', dispidMember
, riid
, lcid
, wFlags
, pdispparams
)
187 return self
.CallAXMethod('GoBack')
190 return self
.CallAXMethod('GoForward')
193 return self
.CallAXMethod('GoHome')
196 return self
.CallAXMethod('GoSearch')
198 # added default for Flags
199 def Navigate(self
, URL
, Flags
=0, TargetFrameName
=None, PostData
=None, Headers
=None):
200 return self
.CallAXMethod('Navigate', URL
, Flags
, TargetFrameName
, PostData
, Headers
)
202 # Removed to prevent conflict with wx.Window.Refresh
204 # return self.CallAXMethod('Refresh')
207 def RefreshPage(self
, Level
=REFRESH_NORMAL
):
208 return self
.CallAXMethod('Refresh2', Level
)
211 return self
.CallAXMethod('Stop')
214 return self
.CallAXMethod('Quit')
216 def ClientToWindow(self
, pcx
, pcy
):
217 return self
.CallAXMethod('ClientToWindow', pcx
, pcy
)
219 def PutProperty(self
, Property
, vtValue
):
220 return self
.CallAXMethod('PutProperty', Property
, vtValue
)
222 def GetProperty(self
, Property
):
223 return self
.CallAXMethod('GetProperty', Property
)
225 # added default for flags
226 def Navigate2(self
, URL
, Flags
=0, TargetFrameName
=None, PostData
=None, Headers
=None):
227 return self
.CallAXMethod('Navigate2', URL
, Flags
, TargetFrameName
, PostData
, Headers
)
229 def QueryStatusWB(self
, cmdID
):
230 return self
.CallAXMethod('QueryStatusWB', cmdID
)
232 def ExecWB(self
, cmdID
, cmdexecopt
, pvaIn
, pvaOut
=None):
233 return self
.CallAXMethod('ExecWB', cmdID
, cmdexecopt
, pvaIn
, pvaOut
)
235 def ShowBrowserBar(self
, pvaClsid
, pvarShow
, pvarSize
=None):
236 return self
.CallAXMethod('ShowBrowserBar', pvaClsid
, pvarShow
, pvarSize
)
238 # Getters, Setters and properties
239 def _get_Application(self
):
240 return self
.GetAXProp('Application')
241 application
= property(_get_Application
, None)
243 def _get_Parent(self
):
244 return self
.GetAXProp('Parent')
245 parent
= property(_get_Parent
, None)
247 def _get_Container(self
):
248 return self
.GetAXProp('Container')
249 container
= property(_get_Container
, None)
251 def _get_Document(self
):
252 return self
.GetAXProp('Document')
253 document
= property(_get_Document
, None)
255 def _get_TopLevelContainer(self
):
256 return self
.GetAXProp('TopLevelContainer')
257 toplevelcontainer
= property(_get_TopLevelContainer
, None)
260 return self
.GetAXProp('Type')
261 type = property(_get_Type
, None)
264 return self
.GetAXProp('Left')
265 def _set_Left(self
, Left
):
266 self
.SetAXProp('Left', Left
)
267 left
= property(_get_Left
, _set_Left
)
270 return self
.GetAXProp('Top')
271 def _set_Top(self
, Top
):
272 self
.SetAXProp('Top', Top
)
273 top
= property(_get_Top
, _set_Top
)
275 def _get_Width(self
):
276 return self
.GetAXProp('Width')
277 def _set_Width(self
, Width
):
278 self
.SetAXProp('Width', Width
)
279 width
= property(_get_Width
, _set_Width
)
281 def _get_Height(self
):
282 return self
.GetAXProp('Height')
283 def _set_Height(self
, Height
):
284 self
.SetAXProp('Height', Height
)
285 height
= property(_get_Height
, _set_Height
)
287 def _get_LocationName(self
):
288 return self
.GetAXProp('LocationName')
289 locationname
= property(_get_LocationName
, None)
291 def _get_LocationURL(self
):
292 return self
.GetAXProp('LocationURL')
293 locationurl
= property(_get_LocationURL
, None)
296 return self
.GetAXProp('Busy')
297 busy
= property(_get_Busy
, None)
300 return self
.GetAXProp('Name')
301 name
= property(_get_Name
, None)
304 return self
.GetAXProp('HWND')
305 hwnd
= property(_get_HWND
, None)
307 def _get_FullName(self
):
308 return self
.GetAXProp('FullName')
309 fullname
= property(_get_FullName
, None)
312 return self
.GetAXProp('Path')
313 path
= property(_get_Path
, None)
315 def _get_Visible(self
):
316 return self
.GetAXProp('Visible')
317 def _set_Visible(self
, Visible
):
318 self
.SetAXProp('Visible', Visible
)
319 visible
= property(_get_Visible
, _set_Visible
)
321 def _get_StatusBar(self
):
322 return self
.GetAXProp('StatusBar')
323 def _set_StatusBar(self
, StatusBar
):
324 self
.SetAXProp('StatusBar', StatusBar
)
325 statusbar
= property(_get_StatusBar
, _set_StatusBar
)
327 def _get_StatusText(self
):
328 return self
.GetAXProp('StatusText')
329 def _set_StatusText(self
, StatusText
):
330 self
.SetAXProp('StatusText', StatusText
)
331 statustext
= property(_get_StatusText
, _set_StatusText
)
333 def _get_ToolBar(self
):
334 return self
.GetAXProp('ToolBar')
335 def _set_ToolBar(self
, ToolBar
):
336 self
.SetAXProp('ToolBar', ToolBar
)
337 toolbar
= property(_get_ToolBar
, _set_ToolBar
)
339 def _get_MenuBar(self
):
340 return self
.GetAXProp('MenuBar')
341 def _set_MenuBar(self
, MenuBar
):
342 self
.SetAXProp('MenuBar', MenuBar
)
343 menubar
= property(_get_MenuBar
, _set_MenuBar
)
345 def _get_FullScreen(self
):
346 return self
.GetAXProp('FullScreen')
347 def _set_FullScreen(self
, FullScreen
):
348 self
.SetAXProp('FullScreen', FullScreen
)
349 fullscreen
= property(_get_FullScreen
, _set_FullScreen
)
351 def _get_ReadyState(self
):
352 return self
.GetAXProp('ReadyState')
353 readystate
= property(_get_ReadyState
, None)
355 def _get_Offline(self
):
356 return self
.GetAXProp('Offline')
357 def _set_Offline(self
, Offline
):
358 self
.SetAXProp('Offline', Offline
)
359 offline
= property(_get_Offline
, _set_Offline
)
361 def _get_Silent(self
):
362 return self
.GetAXProp('Silent')
363 def _set_Silent(self
, Silent
):
364 self
.SetAXProp('Silent', Silent
)
365 silent
= property(_get_Silent
, _set_Silent
)
367 def _get_RegisterAsBrowser(self
):
368 return self
.GetAXProp('RegisterAsBrowser')
369 def _set_RegisterAsBrowser(self
, RegisterAsBrowser
):
370 self
.SetAXProp('RegisterAsBrowser', RegisterAsBrowser
)
371 registerasbrowser
= property(_get_RegisterAsBrowser
, _set_RegisterAsBrowser
)
373 def _get_RegisterAsDropTarget(self
):
374 return self
.GetAXProp('RegisterAsDropTarget')
375 def _set_RegisterAsDropTarget(self
, RegisterAsDropTarget
):
376 self
.SetAXProp('RegisterAsDropTarget', RegisterAsDropTarget
)
377 registerasdroptarget
= property(_get_RegisterAsDropTarget
, _set_RegisterAsDropTarget
)
379 def _get_TheaterMode(self
):
380 return self
.GetAXProp('TheaterMode')
381 def _set_TheaterMode(self
, TheaterMode
):
382 self
.SetAXProp('TheaterMode', TheaterMode
)
383 theatermode
= property(_get_TheaterMode
, _set_TheaterMode
)
385 def _get_AddressBar(self
):
386 return self
.GetAXProp('AddressBar')
387 def _set_AddressBar(self
, AddressBar
):
388 self
.SetAXProp('AddressBar', AddressBar
)
389 addressbar
= property(_get_AddressBar
, _set_AddressBar
)
391 def _get_Resizable(self
):
392 return self
.GetAXProp('Resizable')
393 def _set_Resizable(self
, Resizable
):
394 self
.SetAXProp('Resizable', Resizable
)
395 resizable
= property(_get_Resizable
, _set_Resizable
)
399 # --------------------
401 # type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
404 # type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
407 # type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
410 # type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
413 # type:bool arg:VT_EMPTY canGet:True canSet:False
416 # type:string arg:VT_EMPTY canGet:True canSet:False
419 # type:int arg:int canGet:True canSet:True
422 # type:int arg:int canGet:True canSet:True
425 # type:int arg:int canGet:True canSet:True
428 # type:int arg:int canGet:True canSet:True
431 # type:string arg:VT_EMPTY canGet:True canSet:False
434 # type:string arg:VT_EMPTY canGet:True canSet:False
437 # type:bool arg:VT_EMPTY canGet:True canSet:False
440 # type:string arg:VT_EMPTY canGet:True canSet:False
443 # type:int arg:VT_EMPTY canGet:True canSet:False
446 # type:string arg:VT_EMPTY canGet:True canSet:False
449 # type:string arg:VT_EMPTY canGet:True canSet:False
452 # type:bool arg:bool canGet:True canSet:True
455 # type:bool arg:bool canGet:True canSet:True
458 # type:string arg:string canGet:True canSet:True
461 # type:int arg:int canGet:True canSet:True
464 # type:bool arg:bool canGet:True canSet:True
467 # type:bool arg:bool canGet:True canSet:True
470 # type:unsupported type 29 arg:VT_EMPTY canGet:True canSet:False
473 # type:bool arg:bool canGet:True canSet:True
476 # type:bool arg:bool canGet:True canSet:True
479 # type:bool arg:bool canGet:True canSet:True
481 # registerasdroptarget
482 # type:bool arg:bool canGet:True canSet:True
485 # type:bool arg:bool canGet:True canSet:True
488 # type:bool arg:bool canGet:True canSet:True
491 # type:bool arg:bool canGet:True canSet:True
497 # --------------------
502 # in:True out:False optional:False type:unsupported type 29
504 # in:False out:True optional:False type:unsupported type 26
516 # in:False out:True optional:False type:int
522 # in:True out:False optional:False type:int
524 # in:True out:False optional:False type:int
526 # in:False out:True optional:False type:unsupported type 26
532 # in:True out:False optional:False type:unsupported type 29
534 # in:True out:False optional:False type:unsupported type 26
536 # in:True out:False optional:False type:int
538 # in:True out:False optional:False type:int
540 # in:False out:True optional:False type:int
546 # in:True out:False optional:False type:int
548 # in:True out:False optional:False type:unsupported type 29
550 # in:True out:False optional:False type:int
552 # in:True out:False optional:False type:int
554 # in:True out:False optional:False type:unsupported type 29
556 # in:False out:True optional:False type:VT_VARIANT
558 # in:False out:True optional:False type:unsupported type 29
560 # in:False out:True optional:False type:int
578 # in:True out:False optional:False type:string
580 # in:True out:False optional:False type:VT_VARIANT
582 # in:True out:False optional:True type:VT_VARIANT
584 # in:True out:False optional:True type:VT_VARIANT
586 # in:True out:False optional:True type:VT_VARIANT
595 # in:True out:False optional:False type:VT_VARIANT
607 # in:True out:True optional:False type:int
609 # in:True out:True optional:False type:int
615 # in:True out:False optional:False type:string
617 # in:True out:False optional:False type:VT_VARIANT
620 # retType: VT_VARIANT
623 # in:True out:False optional:False type:string
629 # in:True out:False optional:False type:VT_VARIANT
631 # in:True out:False optional:False type:VT_VARIANT
633 # in:True out:False optional:True type:VT_VARIANT
635 # in:True out:False optional:True type:VT_VARIANT
637 # in:True out:False optional:True type:VT_VARIANT
640 # retType: unsupported type 29
643 # in:True out:False optional:False type:unsupported type 29
649 # in:True out:False optional:False type:unsupported type 29
651 # in:True out:False optional:False type:unsupported type 29
653 # in:True out:False optional:False type:VT_VARIANT
655 # in:True out:True optional:True type:VT_VARIANT
661 # in:True out:False optional:False type:VT_VARIANT
663 # in:True out:False optional:False type:VT_VARIANT
665 # in:True out:False optional:True type:VT_VARIANT
671 # --------------------
676 # in:True out:False optional:False type:string
682 # in:True out:False optional:False type:int
684 # in:True out:False optional:False type:int
690 # in:True out:False optional:False type:int
692 # in:True out:False optional:False type:bool
704 # in:True out:False optional:False type:string
710 # in:True out:False optional:False type:string
716 # in:True out:False optional:False type:VT_DISPATCH
718 # in:True out:False optional:False type:VT_VARIANT
720 # in:True out:False optional:False type:VT_VARIANT
722 # in:True out:False optional:False type:VT_VARIANT
724 # in:True out:False optional:False type:VT_VARIANT
726 # in:True out:False optional:False type:VT_VARIANT
728 # in:True out:True optional:False type:bool
734 # in:True out:True optional:False type:VT_DISPATCH
736 # in:True out:True optional:False type:bool
742 # in:True out:False optional:False type:VT_DISPATCH
744 # in:True out:False optional:False type:VT_VARIANT
750 # in:True out:False optional:False type:VT_DISPATCH
752 # in:True out:False optional:False type:VT_VARIANT
761 # in:True out:False optional:False type:bool
767 # in:True out:False optional:False type:bool
773 # in:True out:False optional:False type:bool
779 # in:True out:False optional:False type:bool
785 # in:True out:False optional:False type:bool
791 # in:True out:False optional:False type:bool
797 # in:True out:False optional:False type:bool
803 # in:True out:False optional:False type:int
809 # in:True out:False optional:False type:int
815 # in:True out:False optional:False type:int
821 # in:True out:False optional:False type:int
827 # in:True out:False optional:False type:bool
829 # in:True out:True optional:False type:bool
835 # in:True out:True optional:False type:int
837 # in:True out:True optional:False type:int
843 # in:True out:False optional:False type:int
849 # in:True out:True optional:False type:bool
855 # in:True out:False optional:False type:VT_DISPATCH
857 # in:True out:False optional:False type:VT_VARIANT
859 # in:True out:False optional:False type:VT_VARIANT
861 # in:True out:False optional:False type:VT_VARIANT
863 # in:True out:True optional:False type:bool
865 # PrintTemplateInstantiation
869 # in:True out:False optional:False type:VT_DISPATCH
871 # PrintTemplateTeardown
875 # in:True out:False optional:False type:VT_DISPATCH
881 # in:True out:False optional:False type:VT_DISPATCH
883 # in:True out:False optional:False type:VT_VARIANT
885 # in:True out:False optional:False type:VT_VARIANT
887 # PrivacyImpactedStateChange
891 # in:True out:False optional:False type:bool