1ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh###################################################################### 2ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# This file should be kept compatible with Python 2.3, see PEP 291. # 3ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh###################################################################### 4ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 5ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# The most useful windows datatypes 6ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehfrom ctypes import * 7ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 8ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehBYTE = c_byte 9ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehWORD = c_ushort 10ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehDWORD = c_ulong 11ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 12ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehWCHAR = c_wchar 13ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehUINT = c_uint 14ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehINT = c_int 15ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 16ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehDOUBLE = c_double 17ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehFLOAT = c_float 18ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 19ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehBOOLEAN = BYTE 20ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehBOOL = c_long 21ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 22ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehfrom ctypes import _SimpleCData 23ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass VARIANT_BOOL(_SimpleCData): 24ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _type_ = "v" 25ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh def __repr__(self): 26ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return "%s(%r)" % (self.__class__.__name__, self.value) 27ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 28ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehULONG = c_ulong 29ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLONG = c_long 30ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 31ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehUSHORT = c_ushort 32ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehSHORT = c_short 33ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 34ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# in the windows header files, these are structures. 35ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh_LARGE_INTEGER = LARGE_INTEGER = c_longlong 36ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh_ULARGE_INTEGER = ULARGE_INTEGER = c_ulonglong 37ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 38ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLPCOLESTR = LPOLESTR = OLESTR = c_wchar_p 39ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLPCWSTR = LPWSTR = c_wchar_p 40ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLPCSTR = LPSTR = c_char_p 41ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLPCVOID = LPVOID = c_void_p 42ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 43ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# WPARAM is defined as UINT_PTR (unsigned type) 44ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# LPARAM is defined as LONG_PTR (signed type) 45ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehif sizeof(c_long) == sizeof(c_void_p): 46ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh WPARAM = c_ulong 47ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh LPARAM = c_long 48ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehelif sizeof(c_longlong) == sizeof(c_void_p): 49ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh WPARAM = c_ulonglong 50ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh LPARAM = c_longlong 51ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 52ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehATOM = WORD 53ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLANGID = WORD 54ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 55ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehCOLORREF = DWORD 56ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLGRPID = DWORD 57ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLCTYPE = DWORD 58ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 59ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehLCID = DWORD 60ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 61ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh################################################################ 62ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# HANDLE types 63ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHANDLE = c_void_p # in the header files: void * 64ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 65ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHACCEL = HANDLE 66ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHBITMAP = HANDLE 67ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHBRUSH = HANDLE 68ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHCOLORSPACE = HANDLE 69ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHDC = HANDLE 70ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHDESK = HANDLE 71ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHDWP = HANDLE 72ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHENHMETAFILE = HANDLE 73ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHFONT = HANDLE 74ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHGDIOBJ = HANDLE 75ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHGLOBAL = HANDLE 76ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHHOOK = HANDLE 77ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHICON = HANDLE 78ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHINSTANCE = HANDLE 79ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHKEY = HANDLE 80ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHKL = HANDLE 81ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHLOCAL = HANDLE 82ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHMENU = HANDLE 83ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHMETAFILE = HANDLE 84ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHMODULE = HANDLE 85ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHMONITOR = HANDLE 86ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHPALETTE = HANDLE 87ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHPEN = HANDLE 88ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHRGN = HANDLE 89ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHRSRC = HANDLE 90ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHSTR = HANDLE 91ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHTASK = HANDLE 92ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHWINSTA = HANDLE 93ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehHWND = HANDLE 94ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehSC_HANDLE = HANDLE 95ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehSERVICE_STATUS_HANDLE = HANDLE 96ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 97ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh################################################################ 98ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh# Some important structure definitions 99ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 100ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass RECT(Structure): 101ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [("left", c_long), 102ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("top", c_long), 103ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("right", c_long), 104ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("bottom", c_long)] 105ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehtagRECT = _RECTL = RECTL = RECT 106ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 107ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass _SMALL_RECT(Structure): 108ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [('Left', c_short), 109ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ('Top', c_short), 110ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ('Right', c_short), 111ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ('Bottom', c_short)] 112ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehSMALL_RECT = _SMALL_RECT 113ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 114ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass _COORD(Structure): 115ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [('X', c_short), 116ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ('Y', c_short)] 117ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 118ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass POINT(Structure): 119ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [("x", c_long), 120ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("y", c_long)] 121ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehtagPOINT = _POINTL = POINTL = POINT 122ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 123ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass SIZE(Structure): 124ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [("cx", c_long), 125ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("cy", c_long)] 126ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehtagSIZE = SIZEL = SIZE 127ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 128ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehdef RGB(red, green, blue): 129ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh return red + (green << 8) + (blue << 16) 130ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 131ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass FILETIME(Structure): 132ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [("dwLowDateTime", DWORD), 133ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("dwHighDateTime", DWORD)] 134ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh_FILETIME = FILETIME 135ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 136ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass MSG(Structure): 137ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [("hWnd", HWND), 138ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("message", c_uint), 139ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("wParam", WPARAM), 140ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("lParam", LPARAM), 141ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("time", DWORD), 142ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("pt", POINT)] 143ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehtagMSG = MSG 144ffab958fd8d42ed7227d83007350e61555a1fa36Andrew HsiehMAX_PATH = 260 145ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 146ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass WIN32_FIND_DATAA(Structure): 147ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [("dwFileAttributes", DWORD), 148ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("ftCreationTime", FILETIME), 149ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("ftLastAccessTime", FILETIME), 150ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("ftLastWriteTime", FILETIME), 151ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("nFileSizeHigh", DWORD), 152ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("nFileSizeLow", DWORD), 153ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("dwReserved0", DWORD), 154ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("dwReserved1", DWORD), 155ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("cFileName", c_char * MAX_PATH), 156ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("cAlternateFileName", c_char * 14)] 157ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 158ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsiehclass WIN32_FIND_DATAW(Structure): 159ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh _fields_ = [("dwFileAttributes", DWORD), 160ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("ftCreationTime", FILETIME), 161ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("ftLastAccessTime", FILETIME), 162ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("ftLastWriteTime", FILETIME), 163ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("nFileSizeHigh", DWORD), 164ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("nFileSizeLow", DWORD), 165ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("dwReserved0", DWORD), 166ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("dwReserved1", DWORD), 167ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("cFileName", c_wchar * MAX_PATH), 168ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh ("cAlternateFileName", c_wchar * 14)] 169ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 170ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh__all__ = ['ATOM', 'BOOL', 'BOOLEAN', 'BYTE', 'COLORREF', 'DOUBLE', 'DWORD', 171ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'FILETIME', 'FLOAT', 'HACCEL', 'HANDLE', 'HBITMAP', 'HBRUSH', 172ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'HCOLORSPACE', 'HDC', 'HDESK', 'HDWP', 'HENHMETAFILE', 'HFONT', 173ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'HGDIOBJ', 'HGLOBAL', 'HHOOK', 'HICON', 'HINSTANCE', 'HKEY', 174ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'HKL', 'HLOCAL', 'HMENU', 'HMETAFILE', 'HMODULE', 'HMONITOR', 175ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'HPALETTE', 'HPEN', 'HRGN', 'HRSRC', 'HSTR', 'HTASK', 'HWINSTA', 176ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'HWND', 'INT', 'LANGID', 'LARGE_INTEGER', 'LCID', 'LCTYPE', 177ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'LGRPID', 'LONG', 'LPARAM', 'LPCOLESTR', 'LPCSTR', 'LPCVOID', 178ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'LPCWSTR', 'LPOLESTR', 'LPSTR', 'LPVOID', 'LPWSTR', 'MAX_PATH', 179ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'MSG', 'OLESTR', 'POINT', 'POINTL', 'RECT', 'RECTL', 'RGB', 180ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'SC_HANDLE', 'SERVICE_STATUS_HANDLE', 'SHORT', 'SIZE', 'SIZEL', 181ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'SMALL_RECT', 'UINT', 'ULARGE_INTEGER', 'ULONG', 'USHORT', 182ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'VARIANT_BOOL', 'WCHAR', 'WIN32_FIND_DATAA', 'WIN32_FIND_DATAW', 183ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'WORD', 'WPARAM', '_COORD', '_FILETIME', '_LARGE_INTEGER', 184ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh '_POINTL', '_RECTL', '_SMALL_RECT', '_ULARGE_INTEGER', 'tagMSG', 185ffab958fd8d42ed7227d83007350e61555a1fa36Andrew Hsieh 'tagPOINT', 'tagRECT', 'tagSIZE'] 186