On 6/10/06, Paul Moore <[EMAIL PROTECTED]> wrote: > On 6/10/06, Ka-Ping Yee <[EMAIL PROTECTED]> wrote: > > ...so i looked at PEAK's getnodeid48() routine and borrowed the > > Win32 calls from there, with a comment giving attribution to PEAK. > > Instead of using pywin32, could you use ctypes, as that's part of core > Python? It looks like the only Win32 API you use is CoCreateGUID, so > wrapping it should be doable...
Here's some sample code (taken from Thomas Heller's comtypes module) >>> from ctypes import oledll, Structure, byref >>> from ctypes.wintypes import BYTE, WORD, DWORD >>> class GUID(Structure): ... _fields_ = [("Data1", DWORD), ... ("Data2", WORD), ... ("Data3", WORD), ... ("Data4", BYTE * 8)] ... >>> guid = GUID() >>> oledll.ole32.CoCreateGuid(byref(guid)) 0 >>> guid <__main__.GUID object at 0x00978EE0> >>> guid.Data1 3391869098L >>> guid.Data2 51115 >>> guid.Data3 20060 >>> guid.Data4 <__main__.c_byte_Array_8 object at 0x00978E40> >>> I'm not sure what the int(...[-13,-1], 16) does (as it stands, it fails for me - I think you need to put str() round the CreateGuid call) but I *think* it's the equivalent of guid.Data1 above. So, you'd have: def win32_getnode(): """Get the hardware address on Windows using Win32 extensions.""" from ctypes import oledll, Structure, byref from ctypes.wintypes import BYTE, WORD, DWORD class GUID(Structure): _fields_ = [("Data1", DWORD), ("Data2", WORD), ("Data3", WORD), ("Data4", BYTE * 8)] guid = GUID() oledll.ole32.CoCreateGuid(byref(guid)) return guid.Data1 Hope this is of use. Paul. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com