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