--- /dev/null
+#A part of NonVisual Desktop Access (NVDA)\r
+#Copyright (C) 2006-2008 NVDA Contributors <http://www.nvda-project.org/>\r
+#This file is covered by the GNU General Public License.\r
+#See the file COPYING for more details.\r
+\r
+#Monkey patch comtypes to support byref in variants\r
+from comtypes.automation import VARIANT, VT_BYREF\r
+from ctypes import cast, c_void_p\r
+from _ctypes import _Pointer\r
+oldVARIANT_value_fset=VARIANT.value.fset\r
+def newVARIANT_value_fset(self,value):\r
+ realValue=value\r
+ if isinstance(value,_Pointer):\r
+ try:\r
+ value=value.contents\r
+ except (NameError,AttributeError):\r
+ pass\r
+ oldVARIANT_value_fset(self,value)\r
+ if realValue is not value:\r
+ self.vt|=VT_BYREF\r
+ self._.c_void_p=cast(realValue,c_void_p)\r
+VARIANT.value=property(VARIANT.value.fget,newVARIANT_value_fset,VARIANT.value.fdel)\r
+\r
+#Monkeypatch comtypes lazybind dynamic IDispatch support to fallback to the more basic dynamic IDispatch support if the former does not work\r
+#Example: ITypeComp.bind gives back a vardesc, which comtypes does not yet support\r
+import comtypes.client.lazybind\r
+old__getattr__=comtypes.client.lazybind.Dispatch.__getattr__\r
+def new__getattr__(self,name):\r
+ try:\r
+ return old__getattr__(self,name)\r
+ except (NameError, AttributeError):\r
+ return getattr(comtypes.client.dynamic._Dispatch(self._comobj),name)\r
+comtypes.client.lazybind.Dispatch.__getattr__=new__getattr__\r
+\r
+#Monkeypatch comtypes to allow its basic dynamic Dispatch support to support invoke 0 (calling the actual IDispatch object itself)\r
+def new__call__(self,*args,**kwargs):\r
+ return comtypes.client.dynamic.MethodCaller(0,self)(*args,**kwargs)\r
+comtypes.client.dynamic._Dispatch.__call__=new__call__\r
import comInterfaces\r
comtypes.gen.__path__.append(comInterfaces.__path__[0])\r
\r
-#Monkey patch comtypes to support byref in variants\r
-from comtypes.automation import VARIANT, VT_BYREF\r
-from ctypes import cast, c_void_p\r
-from _ctypes import _Pointer\r
-oldVARIANT_value_fset=VARIANT.value.fset\r
-def newVARIANT_value_fset(self,value):\r
- realValue=value\r
- if isinstance(value,_Pointer):\r
- try:\r
- value=value.contents\r
- except (NameError,AttributeError):\r
- pass\r
- oldVARIANT_value_fset(self,value)\r
- if realValue is not value:\r
- self.vt|=VT_BYREF\r
- self._.c_void_p=cast(realValue,c_void_p)\r
-VARIANT.value=property(VARIANT.value.fget,newVARIANT_value_fset,VARIANT.value.fdel)\r
-\r
-#Monkeypatch comtypes lazybind dynamic IDispatch support to fallback to the more basic dynamic IDispatch support if the former does not work\r
-#Example: ITypeComp.bind gives back a vardesc, which comtypes does not yet support\r
-import comtypes.client.lazybind\r
-old__getattr__=comtypes.client.lazybind.Dispatch.__getattr__\r
-def new__getattr__(self,name):\r
- try:\r
- return old__getattr__(self,name)\r
- except (NameError, AttributeError):\r
- return getattr(comtypes.client.dynamic._Dispatch(self._comobj),name)\r
-comtypes.client.lazybind.Dispatch.__getattr__=new__getattr__\r
-\r
-#Monkeypatch comtypes to allow its basic dynamic Dispatch support to support invoke 0 (calling the actual IDispatch object itself)\r
-def new__call__(self,*args,**kwargs):\r
- return comtypes.client.dynamic.MethodCaller(0,self)(*args,**kwargs)\r
-comtypes.client.dynamic._Dispatch.__call__=new__call__\r
-\r
+#Apply several monky patches to comtypes\r
+import comtypesMonkeyPatches\r
\r
import sys\r
import nvwave\r