" Luke Dunstan" <[EMAIL PROTECTED]> writes: > From: "Thomas Heller" <[EMAIL PROTECTED]> >> "Luke Dunstan" <[EMAIL PROTECTED]> writes: >>> We should probably consider putting all these scripts in CVS somewhere. >> >> And we should probably use the pocketRapi module that Brian Brown >> posted. > > I am interested to know why you prefer it. I can think of the following > advantages: > > - It initialises RAPI the first time you try to use it, and remembers this. > - It includes more file I/O functions. > > I'm sure it is good for some purposes, but I can also think of some possible > disadvantages: > > - The functions are in a class instead of a module. This means that you > could create multiple instances of the class, which doesn't make sense. > - The name "pocketRapi" implies Pocket PC only but RAPI really applies to > Windows CE in general. > - It requires win32file. > - The file I/O functions do not follow the pattern of Python file objects. > - It doesn't include the last error codes in exceptions raised. > - It doesn't use "argtypes" or "restype". I don't know if this makes it > faster? > - Redistributions in "binary form" must reproduce the copyright notice.
I must say I didn't look at the module, but assumed that it wrapped a large amount of the rapi functions, so I wanted to avoid reinventing this particular wheel. Same for the license, I didn't look at it. If I were to commit these scripts somewhere, and add a ctypes-based rapi module, I would most certainly like to take responsibility for the rapi code anyway. Hopefully that would be a good thing, but in the version that I have there are only a couple of lines like this: ctypes.oledll.rapi.CeRapiInit() res = ctypes.windll.rapi.CeCreateProcess(unicode(REMOTE_EXE), unicode(REMOTE_CLIENT), None, None, False, 0, None, None, None, None) if res == 0: raise ctypes.WinError(ctypes.windll.rapi.CeRapiGetError() or \ ctypes.windll.rapi.CeGetLastError()) [...] try: [....] finally: ctypes.oledll.rapi.CeRapiUninit() Not very reusable. To answer your question about 'argtypes' and 'restypes': Not setting argtypes may gain a little bt of speed, but the big advantage of using 'argtypes' would be the auto-string/unicode conversion that ctypes does (which is also missing in my own code). Sorry, Thomas _______________________________________________ PythonCE mailing list PythonCE@python.org http://mail.python.org/mailman/listinfo/pythonce