Format: application/octet-stream
⬇ Download File (4.5 KB)
   1  from ctypes import (
   2      Array,
   3      Structure,
   4      _SimpleCData,
   5      c_byte,
   6      c_char,
   7      c_char_p,
   8      c_double,
   9      c_float,
  10      c_int,
  11      c_long,
  12      c_longlong,
  13      c_short,
  14      c_uint,
  15      c_ulong,
  16      c_ulonglong,
  17      c_ushort,
  18      c_void_p,
  19      c_wchar,
  20      c_wchar_p,
  21      pointer,
  22  )
  23  
  24  BYTE = c_byte
  25  WORD = c_ushort
  26  DWORD = c_ulong
  27  CHAR = c_char
  28  WCHAR = c_wchar
  29  UINT = c_uint
  30  INT = c_int
  31  DOUBLE = c_double
  32  FLOAT = c_float
  33  BOOLEAN = BYTE
  34  BOOL = c_long
  35  
  36  class VARIANT_BOOL(_SimpleCData[bool]): ...
  37  
  38  ULONG = c_ulong
  39  LONG = c_long
  40  USHORT = c_ushort
  41  SHORT = c_short
  42  LARGE_INTEGER = c_longlong
  43  _LARGE_INTEGER = c_longlong
  44  ULARGE_INTEGER = c_ulonglong
  45  _ULARGE_INTEGER = c_ulonglong
  46  
  47  OLESTR = c_wchar_p
  48  LPOLESTR = c_wchar_p
  49  LPCOLESTR = c_wchar_p
  50  LPWSTR = c_wchar_p
  51  LPCWSTR = c_wchar_p
  52  LPSTR = c_char_p
  53  LPCSTR = c_char_p
  54  LPVOID = c_void_p
  55  LPCVOID = c_void_p
  56  
  57  # These two types are pointer-sized unsigned and signed ints, respectively.
  58  # At runtime, they are either c_[u]long or c_[u]longlong, depending on the host's pointer size
  59  # (they are not really separate classes).
  60  class WPARAM(_SimpleCData[int]): ...
  61  class LPARAM(_SimpleCData[int]): ...
  62  
  63  ATOM = WORD
  64  LANGID = WORD
  65  COLORREF = DWORD
  66  LGRPID = DWORD
  67  LCTYPE = DWORD
  68  LCID = DWORD
  69  
  70  HANDLE = c_void_p
  71  HACCEL = HANDLE
  72  HBITMAP = HANDLE
  73  HBRUSH = HANDLE
  74  HCOLORSPACE = HANDLE
  75  HDC = HANDLE
  76  HDESK = HANDLE
  77  HDWP = HANDLE
  78  HENHMETAFILE = HANDLE
  79  HFONT = HANDLE
  80  HGDIOBJ = HANDLE
  81  HGLOBAL = HANDLE
  82  HHOOK = HANDLE
  83  HICON = HANDLE
  84  HINSTANCE = HANDLE
  85  HKEY = HANDLE
  86  HKL = HANDLE
  87  HLOCAL = HANDLE
  88  HMENU = HANDLE
  89  HMETAFILE = HANDLE
  90  HMODULE = HANDLE
  91  HMONITOR = HANDLE
  92  HPALETTE = HANDLE
  93  HPEN = HANDLE
  94  HRGN = HANDLE
  95  HRSRC = HANDLE
  96  HSTR = HANDLE
  97  HTASK = HANDLE
  98  HWINSTA = HANDLE
  99  HWND = HANDLE
 100  SC_HANDLE = HANDLE
 101  SERVICE_STATUS_HANDLE = HANDLE
 102  
 103  class RECT(Structure):
 104      left: LONG
 105      top: LONG
 106      right: LONG
 107      bottom: LONG
 108  
 109  RECTL = RECT
 110  _RECTL = RECT
 111  tagRECT = RECT
 112  
 113  class _SMALL_RECT(Structure):
 114      Left: SHORT
 115      Top: SHORT
 116      Right: SHORT
 117      Bottom: SHORT
 118  
 119  SMALL_RECT = _SMALL_RECT
 120  
 121  class _COORD(Structure):
 122      X: SHORT
 123      Y: SHORT
 124  
 125  class POINT(Structure):
 126      x: LONG
 127      y: LONG
 128  
 129  POINTL = POINT
 130  _POINTL = POINT
 131  tagPOINT = POINT
 132  
 133  class SIZE(Structure):
 134      cx: LONG
 135      cy: LONG
 136  
 137  SIZEL = SIZE
 138  tagSIZE = SIZE
 139  
 140  def RGB(red: int, green: int, blue: int) -> int: ...
 141  
 142  class FILETIME(Structure):
 143      dwLowDateTime: DWORD
 144      dwHighDateTime: DWORD
 145  
 146  _FILETIME = FILETIME
 147  
 148  class MSG(Structure):
 149      hWnd: HWND
 150      message: UINT
 151      wParam: WPARAM
 152      lParam: LPARAM
 153      time: DWORD
 154      pt: POINT
 155  
 156  tagMSG = MSG
 157  MAX_PATH: int
 158  
 159  class WIN32_FIND_DATAA(Structure):
 160      dwFileAttributes: DWORD
 161      ftCreationTime: FILETIME
 162      ftLastAccessTime: FILETIME
 163      ftLastWriteTime: FILETIME
 164      nFileSizeHigh: DWORD
 165      nFileSizeLow: DWORD
 166      dwReserved0: DWORD
 167      dwReserved1: DWORD
 168      cFileName: Array[CHAR]
 169      cAlternateFileName: Array[CHAR]
 170  
 171  class WIN32_FIND_DATAW(Structure):
 172      dwFileAttributes: DWORD
 173      ftCreationTime: FILETIME
 174      ftLastAccessTime: FILETIME
 175      ftLastWriteTime: FILETIME
 176      nFileSizeHigh: DWORD
 177      nFileSizeLow: DWORD
 178      dwReserved0: DWORD
 179      dwReserved1: DWORD
 180      cFileName: Array[WCHAR]
 181      cAlternateFileName: Array[WCHAR]
 182  
 183  # These pointer type definitions use pointer[...] instead of POINTER(...), to allow them
 184  # to be used in type annotations.
 185  PBOOL = pointer[BOOL]
 186  LPBOOL = pointer[BOOL]
 187  PBOOLEAN = pointer[BOOLEAN]
 188  PBYTE = pointer[BYTE]
 189  LPBYTE = pointer[BYTE]
 190  PCHAR = pointer[CHAR]
 191  LPCOLORREF = pointer[COLORREF]
 192  PDWORD = pointer[DWORD]
 193  LPDWORD = pointer[DWORD]
 194  PFILETIME = pointer[FILETIME]
 195  LPFILETIME = pointer[FILETIME]
 196  PFLOAT = pointer[FLOAT]
 197  PHANDLE = pointer[HANDLE]
 198  LPHANDLE = pointer[HANDLE]
 199  PHKEY = pointer[HKEY]
 200  LPHKL = pointer[HKL]
 201  PINT = pointer[INT]
 202  LPINT = pointer[INT]
 203  PLARGE_INTEGER = pointer[LARGE_INTEGER]
 204  PLCID = pointer[LCID]
 205  PLONG = pointer[LONG]
 206  LPLONG = pointer[LONG]
 207  PMSG = pointer[MSG]
 208  LPMSG = pointer[MSG]
 209  PPOINT = pointer[POINT]
 210  LPPOINT = pointer[POINT]
 211  PPOINTL = pointer[POINTL]
 212  PRECT = pointer[RECT]
 213  LPRECT = pointer[RECT]
 214  PRECTL = pointer[RECTL]
 215  LPRECTL = pointer[RECTL]
 216  LPSC_HANDLE = pointer[SC_HANDLE]
 217  PSHORT = pointer[SHORT]
 218  PSIZE = pointer[SIZE]
 219  LPSIZE = pointer[SIZE]
 220  PSIZEL = pointer[SIZEL]
 221  LPSIZEL = pointer[SIZEL]
 222  PSMALL_RECT = pointer[SMALL_RECT]
 223  PUINT = pointer[UINT]
 224  LPUINT = pointer[UINT]
 225  PULARGE_INTEGER = pointer[ULARGE_INTEGER]
 226  PULONG = pointer[ULONG]
 227  PUSHORT = pointer[USHORT]
 228  PWCHAR = pointer[WCHAR]
 229  PWIN32_FIND_DATAA = pointer[WIN32_FIND_DATAA]
 230  LPWIN32_FIND_DATAA = pointer[WIN32_FIND_DATAA]
 231  PWIN32_FIND_DATAW = pointer[WIN32_FIND_DATAW]
 232  LPWIN32_FIND_DATAW = pointer[WIN32_FIND_DATAW]
 233  PWORD = pointer[WORD]
 234  LPWORD = pointer[WORD]
 235