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'):
115 wx
.activex
.IEHtmlWindowBase
.__init
__(self
, parent
,
116 wx
.activex
.CLSID('{8856F961-340A-11D0-A96B-00C04FD705A2}'),
117 ID
, pos
, size
, style
, name
)
119 # Methods from IEHtmlWindowBase. Redirected from here just for
120 # the sake of completeness...
121 def LoadString(self
, html
):
122 """Load the html document from a string"""
123 return wx
.activex
.IEHtmlWindowBase
.LoadString(self
, html
)
126 def LoadStream(self
, stream
):
128 Load the html document from a wx.InputStream or a Python
131 return wx
.activex
.IEHtmlWindowBase
.LoadStream(self
, stream
)
134 def LoadUrl(self
, URL
, Flags
=0):
135 """Load the document from url."""
136 return self
.Navigate2(URL
, Flags
)
139 def GetStringSelection(self
, asHTML
=True):
141 Returns the contents of the selected portion of the document as
142 either html or plain text.
144 return wx
.activex
.IEHtmlWindowBase
.GetStringSelection(self
, asHTML
)
147 def GetText(self
, asHTML
=True):
149 Returns the contents of the the html document as either html or plain text.
151 return wx
.activex
.IEHtmlWindowBase
.GetText(self
, asHTML
)
154 def SetCharset(self
, charset
):
156 return wx
.activex
.IEHtmlWindowBase
.SetCharset(self
, charset
)
159 # Methods exported by the ActiveX object
160 def QueryInterface(self
, riid
):
161 return self
.CallAXMethod('QueryInterface', riid
)
164 return self
.CallAXMethod('AddRef')
167 return self
.CallAXMethod('Release')
169 def GetTypeInfoCount(self
):
170 return self
.CallAXMethod('GetTypeInfoCount')
172 def GetTypeInfo(self
, itinfo
, lcid
):
173 return self
.CallAXMethod('GetTypeInfo', itinfo
, lcid
)
175 def GetIDsOfNames(self
, riid
, rgszNames
, cNames
, lcid
):
176 return self
.CallAXMethod('GetIDsOfNames', riid
, rgszNames
, cNames
, lcid
)
178 def Invoke(self
, dispidMember
, riid
, lcid
, wFlags
, pdispparams
):
179 return self
.CallAXMethod('Invoke', dispidMember
, riid
, lcid
, wFlags
, pdispparams
)
182 return self
.CallAXMethod('GoBack')
185 return self
.CallAXMethod('GoForward')
188 return self
.CallAXMethod('GoHome')
191 return self
.CallAXMethod('GoSearch')
193 # added default for Flags
194 def Navigate(self
, URL
, Flags
=0, TargetFrameName
=None, PostData
=None, Headers
=None):
195 return self
.CallAXMethod('Navigate', URL
, Flags
, TargetFrameName
, PostData
, Headers
)
197 # Removed to prevent conflict with wx.Window.Refresh
199 # return self.CallAXMethod('Refresh')
202 def RefreshPage(self
, Level
=REFRESH_NORMAL
):
203 return self
.CallAXMethod('Refresh2', Level
)
206 return self
.CallAXMethod('Stop')
209 return self
.CallAXMethod('Quit')
211 def ClientToWindow(self
, pcx
, pcy
):
212 return self
.CallAXMethod('ClientToWindow', pcx
, pcy
)
214 def PutProperty(self
, Property
, vtValue
):
215 return self
.CallAXMethod('PutProperty', Property
, vtValue
)
217 def GetProperty(self
, Property
):
218 return self
.CallAXMethod('GetProperty', Property
)
220 # added default for flags
221 def Navigate2(self
, URL
, Flags
=0, TargetFrameName
=None, PostData
=None, Headers
=None):
222 return self
.CallAXMethod('Navigate2', URL
, Flags
, TargetFrameName
, PostData
, Headers
)
224 def QueryStatusWB(self
, cmdID
):
225 return self
.CallAXMethod('QueryStatusWB', cmdID
)
227 def ExecWB(self
, cmdID
, cmdexecopt
, pvaIn
, pvaOut
=None):
228 return self
.CallAXMethod('ExecWB', cmdID
, cmdexecopt
, pvaIn
, pvaOut
)
230 def ShowBrowserBar(self
, pvaClsid
, pvarShow
, pvarSize
=None):
231 return self
.CallAXMethod('ShowBrowserBar', pvaClsid
, pvarShow
, pvarSize
)
233 # Getters, Setters and properties
234 def _get_Application(self
):
235 return self
.GetAXProp('Application')
236 application
= property(_get_Application
, None)
238 def _get_Parent(self
):
239 return self
.GetAXProp('Parent')
240 parent
= property(_get_Parent
, None)
242 def _get_Container(self
):
243 return self
.GetAXProp('Container')
244 container
= property(_get_Container
, None)
246 def _get_Document(self
):
247 return self
.GetAXProp('Document')
248 document
= property(_get_Document
, None)
250 def _get_TopLevelContainer(self
):
251 return self
.GetAXProp('TopLevelContainer')
252 toplevelcontainer
= property(_get_TopLevelContainer
, None)
255 return self
.GetAXProp('Type')
256 type = property(_get_Type
, None)
259 return self
.GetAXProp('Left')
260 def _set_Left(self
, Left
):
261 self
.SetAXProp('Left', Left
)
262 left
= property(_get_Left
, _set_Left
)
265 return self
.GetAXProp('Top')
266 def _set_Top(self
, Top
):
267 self
.SetAXProp('Top', Top
)
268 top
= property(_get_Top
, _set_Top
)
270 def _get_Width(self
):
271 return self
.GetAXProp('Width')
272 def _set_Width(self
, Width
):
273 self
.SetAXProp('Width', Width
)
274 width
= property(_get_Width
, _set_Width
)
276 def _get_Height(self
):
277 return self
.GetAXProp('Height')
278 def _set_Height(self
, Height
):
279 self
.SetAXProp('Height', Height
)
280 height
= property(_get_Height
, _set_Height
)
282 def _get_LocationName(self
):
283 return self
.GetAXProp('LocationName')
284 locationname
= property(_get_LocationName
, None)
286 def _get_LocationURL(self
):
287 return self
.GetAXProp('LocationURL')
288 locationurl
= property(_get_LocationURL
, None)
291 return self
.GetAXProp('Busy')
292 busy
= property(_get_Busy
, None)
295 return self
.GetAXProp('Name')
296 name
= property(_get_Name
, None)
299 return self
.GetAXProp('HWND')
300 hwnd
= property(_get_HWND
, None)
302 def _get_FullName(self
):
303 return self
.GetAXProp('FullName')
304 fullname
= property(_get_FullName
, None)
307 return self
.GetAXProp('Path')
308 path
= property(_get_Path
, None)
310 def _get_Visible(self
):
311 return self
.GetAXProp('Visible')
312 def _set_Visible(self
, Visible
):
313 self
.SetAXProp('Visible', Visible
)
314 visible
= property(_get_Visible
, _set_Visible
)
316 def _get_StatusBar(self
):
317 return self
.GetAXProp('StatusBar')
318 def _set_StatusBar(self
, StatusBar
):
319 self
.SetAXProp('StatusBar', StatusBar
)
320 statusbar
= property(_get_StatusBar
, _set_StatusBar
)
322 def _get_StatusText(self
):
323 return self
.GetAXProp('StatusText')
324 def _set_StatusText(self
, StatusText
):
325 self
.SetAXProp('StatusText', StatusText
)
326 statustext
= property(_get_StatusText
, _set_StatusText
)
328 def _get_ToolBar(self
):
329 return self
.GetAXProp('ToolBar')
330 def _set_ToolBar(self
, ToolBar
):
331 self
.SetAXProp('ToolBar', ToolBar
)
332 toolbar
= property(_get_ToolBar
, _set_ToolBar
)
334 def _get_MenuBar(self
):
335 return self
.GetAXProp('MenuBar')
336 def _set_MenuBar(self
, MenuBar
):
337 self
.SetAXProp('MenuBar', MenuBar
)
338 menubar
= property(_get_MenuBar
, _set_MenuBar
)
340 def _get_FullScreen(self
):
341 return self
.GetAXProp('FullScreen')
342 def _set_FullScreen(self
, FullScreen
):
343 self
.SetAXProp('FullScreen', FullScreen
)
344 fullscreen
= property(_get_FullScreen
, _set_FullScreen
)
346 def _get_ReadyState(self
):
347 return self
.GetAXProp('ReadyState')
348 readystate
= property(_get_ReadyState
, None)
350 def _get_Offline(self
):
351 return self
.GetAXProp('Offline')
352 def _set_Offline(self
, Offline
):
353 self
.SetAXProp('Offline', Offline
)
354 offline
= property(_get_Offline
, _set_Offline
)
356 def _get_Silent(self
):
357 return self
.GetAXProp('Silent')
358 def _set_Silent(self
, Silent
):
359 self
.SetAXProp('Silent', Silent
)
360 silent
= property(_get_Silent
, _set_Silent
)
362 def _get_RegisterAsBrowser(self
):
363 return self
.GetAXProp('RegisterAsBrowser')
364 def _set_RegisterAsBrowser(self
, RegisterAsBrowser
):
365 self
.SetAXProp('RegisterAsBrowser', RegisterAsBrowser
)
366 registerasbrowser
= property(_get_RegisterAsBrowser
, _set_RegisterAsBrowser
)
368 def _get_RegisterAsDropTarget(self
):
369 return self
.GetAXProp('RegisterAsDropTarget')
370 def _set_RegisterAsDropTarget(self
, RegisterAsDropTarget
):
371 self
.SetAXProp('RegisterAsDropTarget', RegisterAsDropTarget
)
372 registerasdroptarget
= property(_get_RegisterAsDropTarget
, _set_RegisterAsDropTarget
)
374 def _get_TheaterMode(self
):
375 return self
.GetAXProp('TheaterMode')
376 def _set_TheaterMode(self
, TheaterMode
):
377 self
.SetAXProp('TheaterMode', TheaterMode
)
378 theatermode
= property(_get_TheaterMode
, _set_TheaterMode
)
380 def _get_AddressBar(self
):
381 return self
.GetAXProp('AddressBar')
382 def _set_AddressBar(self
, AddressBar
):
383 self
.SetAXProp('AddressBar', AddressBar
)
384 addressbar
= property(_get_AddressBar
, _set_AddressBar
)
386 def _get_Resizable(self
):
387 return self
.GetAXProp('Resizable')
388 def _set_Resizable(self
, Resizable
):
389 self
.SetAXProp('Resizable', Resizable
)
390 resizable
= property(_get_Resizable
, _set_Resizable
)
394 # --------------------
396 # type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
399 # type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
402 # type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
405 # type:VT_DISPATCH arg:VT_EMPTY canGet:True canSet:False
408 # type:bool arg:VT_EMPTY canGet:True canSet:False
411 # type:string arg:VT_EMPTY canGet:True canSet:False
414 # type:int arg:int canGet:True canSet:True
417 # type:int arg:int canGet:True canSet:True
420 # type:int arg:int canGet:True canSet:True
423 # type:int arg:int canGet:True canSet:True
426 # type:string arg:VT_EMPTY canGet:True canSet:False
429 # type:string arg:VT_EMPTY canGet:True canSet:False
432 # type:bool arg:VT_EMPTY canGet:True canSet:False
435 # type:string arg:VT_EMPTY canGet:True canSet:False
438 # type:int arg:VT_EMPTY canGet:True canSet:False
441 # type:string arg:VT_EMPTY canGet:True canSet:False
444 # type:string arg:VT_EMPTY canGet:True canSet:False
447 # type:bool arg:bool canGet:True canSet:True
450 # type:bool arg:bool canGet:True canSet:True
453 # type:string arg:string canGet:True canSet:True
456 # type:int arg:int canGet:True canSet:True
459 # type:bool arg:bool canGet:True canSet:True
462 # type:bool arg:bool canGet:True canSet:True
465 # type:unsupported type 29 arg:VT_EMPTY canGet:True canSet:False
468 # type:bool arg:bool canGet:True canSet:True
471 # type:bool arg:bool canGet:True canSet:True
474 # type:bool arg:bool canGet:True canSet:True
476 # registerasdroptarget
477 # type:bool arg:bool canGet:True canSet:True
480 # type:bool arg:bool canGet:True canSet:True
483 # type:bool arg:bool canGet:True canSet:True
486 # type:bool arg:bool canGet:True canSet:True
492 # --------------------
497 # in:True out:False optional:False type:unsupported type 29
499 # in:False out:True optional:False type:unsupported type 26
511 # in:False out:True optional:False type:int
517 # in:True out:False optional:False type:int
519 # in:True out:False optional:False type:int
521 # in:False out:True optional:False type:unsupported type 26
527 # in:True out:False optional:False type:unsupported type 29
529 # in:True out:False optional:False type:unsupported type 26
531 # in:True out:False optional:False type:int
533 # in:True out:False optional:False type:int
535 # in:False out:True optional:False type:int
541 # in:True out:False optional:False type:int
543 # in:True out:False optional:False type:unsupported type 29
545 # in:True out:False optional:False type:int
547 # in:True out:False optional:False type:int
549 # in:True out:False optional:False type:unsupported type 29
551 # in:False out:True optional:False type:VT_VARIANT
553 # in:False out:True optional:False type:unsupported type 29
555 # in:False out:True optional:False type:int
573 # in:True out:False optional:False type:string
575 # in:True out:False optional:False type:VT_VARIANT
577 # in:True out:False optional:True type:VT_VARIANT
579 # in:True out:False optional:True type:VT_VARIANT
581 # in:True out:False optional:True type:VT_VARIANT
590 # in:True out:False optional:False type:VT_VARIANT
602 # in:True out:True optional:False type:int
604 # in:True out:True optional:False type:int
610 # in:True out:False optional:False type:string
612 # in:True out:False optional:False type:VT_VARIANT
615 # retType: VT_VARIANT
618 # in:True out:False optional:False type:string
624 # in:True out:False optional:False type:VT_VARIANT
626 # in:True out:False optional:False type:VT_VARIANT
628 # in:True out:False optional:True type:VT_VARIANT
630 # in:True out:False optional:True type:VT_VARIANT
632 # in:True out:False optional:True type:VT_VARIANT
635 # retType: unsupported type 29
638 # in:True out:False optional:False type:unsupported type 29
644 # in:True out:False optional:False type:unsupported type 29
646 # in:True out:False optional:False type:unsupported type 29
648 # in:True out:False optional:False type:VT_VARIANT
650 # in:True out:True optional:True type:VT_VARIANT
656 # in:True out:False optional:False type:VT_VARIANT
658 # in:True out:False optional:False type:VT_VARIANT
660 # in:True out:False optional:True type:VT_VARIANT
666 # --------------------
671 # in:True out:False optional:False type:string
677 # in:True out:False optional:False type:int
679 # in:True out:False optional:False type:int
685 # in:True out:False optional:False type:int
687 # in:True out:False optional:False type:bool
699 # in:True out:False optional:False type:string
705 # in:True out:False optional:False type:string
711 # in:True out:False optional:False type:VT_DISPATCH
713 # in:True out:False optional:False type:VT_VARIANT
715 # in:True out:False optional:False type:VT_VARIANT
717 # in:True out:False optional:False type:VT_VARIANT
719 # in:True out:False optional:False type:VT_VARIANT
721 # in:True out:False optional:False type:VT_VARIANT
723 # in:True out:True optional:False type:bool
729 # in:True out:True optional:False type:VT_DISPATCH
731 # in:True out:True optional:False type:bool
737 # in:True out:False optional:False type:VT_DISPATCH
739 # in:True out:False optional:False type:VT_VARIANT
745 # in:True out:False optional:False type:VT_DISPATCH
747 # in:True out:False optional:False type:VT_VARIANT
756 # in:True out:False optional:False type:bool
762 # in:True out:False optional:False type:bool
768 # in:True out:False optional:False type:bool
774 # in:True out:False optional:False type:bool
780 # in:True out:False optional:False type:bool
786 # in:True out:False optional:False type:bool
792 # in:True out:False optional:False type:bool
798 # in:True out:False optional:False type:int
804 # in:True out:False optional:False type:int
810 # in:True out:False optional:False type:int
816 # in:True out:False optional:False type:int
822 # in:True out:False optional:False type:bool
824 # in:True out:True optional:False type:bool
830 # in:True out:True optional:False type:int
832 # in:True out:True optional:False type:int
838 # in:True out:False optional:False type:int
844 # in:True out:True optional:False type:bool
850 # in:True out:False optional:False type:VT_DISPATCH
852 # in:True out:False optional:False type:VT_VARIANT
854 # in:True out:False optional:False type:VT_VARIANT
856 # in:True out:False optional:False type:VT_VARIANT
858 # in:True out:True optional:False type:bool
860 # PrintTemplateInstantiation
864 # in:True out:False optional:False type:VT_DISPATCH
866 # PrintTemplateTeardown
870 # in:True out:False optional:False type:VT_DISPATCH
876 # in:True out:False optional:False type:VT_DISPATCH
878 # in:True out:False optional:False type:VT_VARIANT
880 # in:True out:False optional:False type:VT_VARIANT
882 # PrivacyImpactedStateChange
886 # in:True out:False optional:False type:bool