~stomato463/+junk/nvdajp

« back to all changes in this revision

Viewing changes to source/objidl.py

  • Committer: Masataka Shinke
  • Date: 2011-10-25 12:35:26 UTC
  • mfrom: (4185 jpmain)
  • mto: This revision was merged to the branch mainline in revision 4211.
  • Revision ID: mshinke@users.sourceforge.jp-20111025123526-ze527a2rl3z0g2ky
lp:~nishimotz/nvdajp/main : 4185 をマージ

Show diffs side-by-side

added added

removed removed

Lines of Context:
3
3
#This file is covered by the GNU General Public License.
4
4
#See the file COPYING for more details.
5
5
 
6
 
from ctypes import POINTER
 
6
from ctypes import *
7
7
from ctypes.wintypes import HWND, HRESULT, BOOL
8
 
from comtypes import GUID, COMMETHOD, IUnknown
 
8
from comtypes import GUID, COMMETHOD, IUnknown, tagBIND_OPTS2
 
9
from comtypes.persist import IPersist
 
10
WSTRING = c_wchar_p
9
11
 
10
12
class IOleWindow(IUnknown):
11
13
        _iid_ = GUID("{00000114-0000-0000-C000-000000000046}")
17
19
                        (["in"], BOOL, "fEnterMode")
18
20
                ),
19
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
]