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