Module objidl
[hide private]
[frames] | no frames]

Source Code for Module objidl

  1  #objidl.py 
  2  #A part of NonVisual Desktop Access (NVDA) 
  3  #This file is covered by the GNU General Public License. 
  4  #See the file COPYING for more details. 
  5   
  6  from ctypes import * 
  7  from ctypes.wintypes import HWND, HRESULT, BOOL 
  8  from comtypes import GUID, COMMETHOD, IUnknown, tagBIND_OPTS2 
  9  from comtypes.persist import IPersist 
 10  WSTRING = c_wchar_p 
 11   
12 -class IOleWindow(IUnknown):
13 _iid_ = GUID("{00000114-0000-0000-C000-000000000046}") 14 _methods_ = [ 15 COMMETHOD([], HRESULT, "GetWindow", 16 (["out"], POINTER(HWND), "phwnd") 17 ), 18 COMMETHOD([], HRESULT, "ContextSensitiveHelp", 19 (["in"], BOOL, "fEnterMode") 20 ), 21 ]
22
23 -class _LARGE_INTEGER(Structure):
24 _fields_ = [ 25 ('QuadPart', c_longlong), 26 ]
27
28 -class _ULARGE_INTEGER(Structure):
29 _fields_ = [ 30 ('QuadPart', c_ulonglong), 31 ]
32
33 -class _FILETIME(Structure):
34 _fields_ = [ 35 ('dwLowDateTime', c_ulong), 36 ('dwHighDateTime', c_ulong), 37 ]
38
39 -class tagSTATSTG(Structure):
40 _fields_ = [ 41 ('pwcsName', WSTRING), 42 ('type', c_ulong), 43 ('cbSize', _ULARGE_INTEGER), 44 ('mtime', _FILETIME), 45 ('ctime', _FILETIME), 46 ('atime', _FILETIME), 47 ('grfMode', c_ulong), 48 ('grfLocksSupported', c_ulong), 49 ('clsid', GUID), 50 ('grfStateBits', c_ulong), 51 ('reserved', c_ulong), 52 ]
53
54 -class ISequentialStream(IUnknown):
55 _iid_ = GUID('{0C733A30-2A1C-11CE-ADE5-00AA0044773D}') 56 _idlflags_ = [] 57 _methods_ = [ 58 COMMETHOD([], HRESULT, 'RemoteRead', 59 ( ['out'], POINTER(c_ubyte), 'pv' ), 60 ( ['in'], c_ulong, 'cb' ), 61 ( ['out'], POINTER(c_ulong), 'pcbRead' )), 62 COMMETHOD([], HRESULT, 'RemoteWrite', 63 ( ['in'], POINTER(c_ubyte), 'pv' ), 64 ( ['in'], c_ulong, 'cb' ), 65 ( ['out'], POINTER(c_ulong), 'pcbWritten' )), 66 ]
67
68 -class IStream(ISequentialStream):
69 _iid_ = GUID('{0000000C-0000-0000-C000-000000000046}') 70 _idlflags_ = []
71 IStream._methods_ = [ 72 COMMETHOD([], HRESULT, 'RemoteSeek', 73 ( ['in'], _LARGE_INTEGER, 'dlibMove' ), 74 ( ['in'], c_ulong, 'dwOrigin' ), 75 ( ['out'], POINTER(_ULARGE_INTEGER), 'plibNewPosition' )), 76 COMMETHOD([], HRESULT, 'SetSize', 77 ( ['in'], _ULARGE_INTEGER, 'libNewSize' )), 78 COMMETHOD([], HRESULT, 'RemoteCopyTo', 79 ( ['in'], POINTER(IStream), 'pstm' ), 80 ( ['in'], _ULARGE_INTEGER, 'cb' ), 81 ( ['out'], POINTER(_ULARGE_INTEGER), 'pcbRead' ), 82 ( ['out'], POINTER(_ULARGE_INTEGER), 'pcbWritten' )), 83 COMMETHOD([], HRESULT, 'Commit', 84 ( ['in'], c_ulong, 'grfCommitFlags' )), 85 COMMETHOD([], HRESULT, 'Revert'), 86 COMMETHOD([], HRESULT, 'LockRegion', 87 ( ['in'], _ULARGE_INTEGER, 'libOffset' ), 88 ( ['in'], _ULARGE_INTEGER, 'cb' ), 89 ( ['in'], c_ulong, 'dwLockType' )), 90 COMMETHOD([], HRESULT, 'UnlockRegion', 91 ( ['in'], _ULARGE_INTEGER, 'libOffset' ), 92 ( ['in'], _ULARGE_INTEGER, 'cb' ), 93 ( ['in'], c_ulong, 'dwLockType' )), 94 COMMETHOD([], HRESULT, 'Stat', 95 ( ['out'], POINTER(tagSTATSTG), 'pstatstg' ), 96 ( ['in'], c_ulong, 'grfStatFlag' )), 97 COMMETHOD([], HRESULT, 'Clone', 98 ( ['out'], POINTER(POINTER(IStream)), 'ppstm' )), 99 ] 100
101 -class IPersistStream(IPersist):
102 _iid_ = GUID('{00000109-0000-0000-C000-000000000046}') 103 _idlflags_ = [] 104 _methods_ = [ 105 COMMETHOD([], HRESULT, 'IsDirty'), 106 COMMETHOD([], HRESULT, 'Load', 107 ( ['in'], POINTER(IStream), 'pstm' )), 108 COMMETHOD([], HRESULT, 'Save', 109 ( ['in'], POINTER(IStream), 'pstm' ), 110 ( ['in'], c_int, 'fClearDirty' )), 111 COMMETHOD([], HRESULT, 'GetSizeMax', 112 ( ['out'], POINTER(_ULARGE_INTEGER), 'pcbSize' )), 113 ]
114
115 -class IRunningObjectTable(IUnknown):
116 _iid_ = GUID('{00000010-0000-0000-C000-000000000046}') 117 _idlflags_ = [] 118
119 - def __iter__(self):
120 return self.EnumRunning()
121
122 -class IEnumString(IUnknown):
123 _iid_ = GUID('{00000101-0000-0000-C000-000000000046}') 124 _idlflags_ = []
125 IEnumString._methods_ = [ 126 COMMETHOD([], HRESULT, 'RemoteNext', 127 ( ['in'], c_ulong, 'celt' ), 128 ( ['out'], POINTER(WSTRING), 'rgelt' ), 129 ( ['out'], POINTER(c_ulong), 'pceltFetched' )), 130 COMMETHOD([], HRESULT, 'Skip', 131 ( ['in'], c_ulong, 'celt' )), 132 COMMETHOD([], HRESULT, 'Reset'), 133 COMMETHOD([], HRESULT, 'Clone', 134 ( ['out'], POINTER(POINTER(IEnumString)), 'ppenum' )), 135 ] 136
137 -class IBindCtx(IUnknown):
138 _iid_ = GUID('{0000000E-0000-0000-C000-000000000046}') 139 _idlflags_ = [] 140 _methods_ = [ 141 COMMETHOD([], HRESULT, 'RegisterObjectBound', 142 ( ['in'], POINTER(IUnknown), 'punk' )), 143 COMMETHOD([], HRESULT, 'RevokeObjectBound', 144 ( ['in'], POINTER(IUnknown), 'punk' )), 145 COMMETHOD([], HRESULT, 'ReleaseBoundObjects'), 146 COMMETHOD([], HRESULT, 'RemoteSetBindOptions', 147 ( ['in'], POINTER(tagBIND_OPTS2), 'pbindopts' )), 148 COMMETHOD([], HRESULT, 'RemoteGetBindOptions', 149 ( ['in', 'out'], POINTER(tagBIND_OPTS2), 'pbindopts' )), 150 COMMETHOD([], HRESULT, 'GetRunningObjectTable', 151 ( ['out'], POINTER(POINTER(IRunningObjectTable)), 'pprot' )), 152 COMMETHOD([], HRESULT, 'RegisterObjectParam', 153 ( ['in'], WSTRING, 'pszKey' ), 154 ( ['in'], POINTER(IUnknown), 'punk' )), 155 COMMETHOD([], HRESULT, 'GetObjectParam', 156 ( ['in'], WSTRING, 'pszKey' ), 157 ( ['out'], POINTER(POINTER(IUnknown)), 'ppunk' )), 158 COMMETHOD([], HRESULT, 'EnumObjectParam', 159 ( ['out'], POINTER(POINTER(IEnumString)), 'ppenum' )), 160 COMMETHOD([], HRESULT, 'RevokeObjectParam', 161 ( ['in'], WSTRING, 'pszKey' )), 162 ]
163
164 -class IMoniker(IPersistStream):
165 _iid_ = GUID('{0000000F-0000-0000-C000-000000000046}') 166 _idlflags_ = [] 167
168 - def GetDisplayName(self, pbc, pmkToLeft):
169 displayName = WSTRING() 170 self.__com_GetDisplayName(pbc, pmkToLeft, displayName) 171 ret = displayName.value 172 windll.ole32.CoTaskMemFree(displayName) 173 return ret
174
175 -class IEnumMoniker(IUnknown):
176 _iid_ = GUID('{00000102-0000-0000-C000-000000000046}') 177 _idlflags_ = [] 178
179 - def Next(self, celt):
180 fetched = c_ulong() 181 if celt == 1: 182 mon = POINTER(IMoniker)() 183 self.__com_Next(celt, mon, fetched) 184 return mon, fetched.value 185 array = (POINTER(IMoniker) * celt)() 186 self.__com_Next(celt, array, fetched) 187 return array[:fetched.value]
188
189 - def __iter__(self):
190 return self
191
192 - def next(self):
193 item, fetched = self.Next(1) 194 if fetched: 195 return item 196 raise StopIteration
197 198 IEnumMoniker._methods_ = [ 199 COMMETHOD([], HRESULT, 'Next', 200 ( ['in'], c_ulong, 'celt' ), 201 ( ['out'], POINTER(POINTER(IMoniker)), 'rgelt' ), 202 ( ['out'], POINTER(c_ulong), 'pceltFetched' )), 203 COMMETHOD([], HRESULT, 'Skip', 204 ( ['in'], c_ulong, 'celt' )), 205 COMMETHOD([], HRESULT, 'Reset'), 206 COMMETHOD([], HRESULT, 'Clone', 207 ( ['out'], POINTER(POINTER(IEnumMoniker)), 'ppenum' )), 208 ] 209 210 IMoniker._methods_ = [ 211 COMMETHOD([], HRESULT, 'RemoteBindToObject', 212 ( ['in'], POINTER(IBindCtx), 'pbc' ), 213 ( ['in'], POINTER(IMoniker), 'pmkToLeft' ), 214 ( ['in'], POINTER(GUID), 'riidResult' ), 215 ( ['out'], POINTER(POINTER(IUnknown)), 'ppvResult' )), 216 COMMETHOD([], HRESULT, 'RemoteBindToStorage', 217 ( ['in'], POINTER(IBindCtx), 'pbc' ), 218 ( ['in'], POINTER(IMoniker), 'pmkToLeft' ), 219 ( ['in'], POINTER(GUID), 'riid' ), 220 ( ['out'], POINTER(POINTER(IUnknown)), 'ppvObj' )), 221 COMMETHOD([], HRESULT, 'Reduce', 222 ( ['in'], POINTER(IBindCtx), 'pbc' ), 223 ( ['in'], c_ulong, 'dwReduceHowFar' ), 224 ( ['in', 'out'], POINTER(POINTER(IMoniker)), 'ppmkToLeft' ), 225 ( ['out'], POINTER(POINTER(IMoniker)), 'ppmkReduced' )), 226 COMMETHOD([], HRESULT, 'ComposeWith', 227 ( ['in'], POINTER(IMoniker), 'pmkRight' ), 228 ( ['in'], c_int, 'fOnlyIfNotGeneric' ), 229 ( ['out'], POINTER(POINTER(IMoniker)), 'ppmkComposite' )), 230 COMMETHOD([], HRESULT, 'Enum', 231 ( ['in'], c_int, 'fForward' ), 232 ( ['out'], POINTER(POINTER(IEnumMoniker)), 'ppenumMoniker' )), 233 COMMETHOD([], HRESULT, 'IsEqual', 234 ( ['in'], POINTER(IMoniker), 'pmkOtherMoniker' )), 235 COMMETHOD([], HRESULT, 'Hash', 236 ( ['out'], POINTER(c_ulong), 'pdwHash' )), 237 COMMETHOD([], HRESULT, 'IsRunning', 238 ( ['in'], POINTER(IBindCtx), 'pbc' ), 239 ( ['in'], POINTER(IMoniker), 'pmkToLeft' ), 240 ( ['in'], POINTER(IMoniker), 'pmkNewlyRunning' )), 241 COMMETHOD([], HRESULT, 'GetTimeOfLastChange', 242 ( ['in'], POINTER(IBindCtx), 'pbc' ), 243 ( ['in'], POINTER(IMoniker), 'pmkToLeft' ), 244 ( ['out'], POINTER(_FILETIME), 'pfiletime' )), 245 COMMETHOD([], HRESULT, 'Inverse', 246 ( ['out'], POINTER(POINTER(IMoniker)), 'ppmk' )), 247 COMMETHOD([], HRESULT, 'CommonPrefixWith', 248 ( ['in'], POINTER(IMoniker), 'pmkOther' ), 249 ( ['out'], POINTER(POINTER(IMoniker)), 'ppmkPrefix' )), 250 COMMETHOD([], HRESULT, 'RelativePathTo', 251 ( ['in'], POINTER(IMoniker), 'pmkOther' ), 252 ( ['out'], POINTER(POINTER(IMoniker)), 'ppmkRelPath' )), 253 COMMETHOD([], HRESULT, 'GetDisplayName', 254 ( ['in'], POINTER(IBindCtx), 'pbc' ), 255 ( ['in'], POINTER(IMoniker), 'pmkToLeft' ), 256 ( ['out'], POINTER(WSTRING), 'ppszDisplayName' )), 257 COMMETHOD([], HRESULT, 'ParseDisplayName', 258 ( ['in'], POINTER(IBindCtx), 'pbc' ), 259 ( ['in'], POINTER(IMoniker), 'pmkToLeft' ), 260 ( ['in'], WSTRING, 'pszDisplayName' ), 261 ( ['out'], POINTER(c_ulong), 'pchEaten' ), 262 ( ['out'], POINTER(POINTER(IMoniker)), 'ppmkOut' )), 263 COMMETHOD([], HRESULT, 'IsSystemMoniker', 264 ( ['out'], POINTER(c_ulong), 'pdwMksys' )), 265 ] 266 267 IRunningObjectTable._methods_ = [ 268 COMMETHOD([], HRESULT, 'Register', 269 ( ['in'], c_ulong, 'grfFlags' ), 270 ( ['in'], POINTER(IUnknown), 'punkObject' ), 271 ( ['in'], POINTER(IMoniker), 'pmkObjectName' ), 272 ( ['out'], POINTER(c_ulong), 'pdwRegister' )), 273 COMMETHOD([], HRESULT, 'Revoke', 274 ( ['in'], c_ulong, 'dwRegister' )), 275 COMMETHOD([], HRESULT, 'IsRunning', 276 ( ['in'], POINTER(IMoniker), 'pmkObjectName' )), 277 COMMETHOD([], HRESULT, 'GetObject', 278 ( ['in'], POINTER(IMoniker), 'pmkObjectName' ), 279 ( ['out'], POINTER(POINTER(IUnknown)), 'ppunkObject' )), 280 COMMETHOD([], HRESULT, 'NoteChangeTime', 281 ( ['in'], c_ulong, 'dwRegister' ), 282 ( ['in'], POINTER(_FILETIME), 'pfiletime' )), 283 COMMETHOD([], HRESULT, 'GetTimeOfLastChange', 284 ( ['in'], POINTER(IMoniker), 'pmkObjectName' ), 285 ( ['out'], POINTER(_FILETIME), 'pfiletime' )), 286 COMMETHOD([], HRESULT, 'EnumRunning', 287 ( ['out'], POINTER(POINTER(IEnumMoniker)), 'ppenumMoniker' )), 288 ] 289