mirror of
https://github.com/davidhalter/typeshed.git
synced 2025-12-07 04:34:28 +08:00
299 lines
6.2 KiB
Python
299 lines
6.2 KiB
Python
from ctypes import (
|
|
Array,
|
|
Structure,
|
|
_CField,
|
|
_Pointer,
|
|
_SimpleCData,
|
|
c_byte,
|
|
c_char,
|
|
c_char_p,
|
|
c_double,
|
|
c_float,
|
|
c_int,
|
|
c_long,
|
|
c_longlong,
|
|
c_short,
|
|
c_uint,
|
|
c_ulong,
|
|
c_ulonglong,
|
|
c_ushort,
|
|
c_void_p,
|
|
c_wchar,
|
|
c_wchar_p,
|
|
)
|
|
from typing import TypeVar
|
|
from typing_extensions import TypeAlias
|
|
|
|
BYTE = c_byte
|
|
WORD = c_ushort
|
|
DWORD = c_ulong
|
|
CHAR = c_char
|
|
WCHAR = c_wchar
|
|
UINT = c_uint
|
|
INT = c_int
|
|
DOUBLE = c_double
|
|
FLOAT = c_float
|
|
BOOLEAN = BYTE
|
|
BOOL = c_long
|
|
|
|
class VARIANT_BOOL(_SimpleCData[bool]): ...
|
|
|
|
ULONG = c_ulong
|
|
LONG = c_long
|
|
USHORT = c_ushort
|
|
SHORT = c_short
|
|
LARGE_INTEGER = c_longlong
|
|
_LARGE_INTEGER = c_longlong
|
|
ULARGE_INTEGER = c_ulonglong
|
|
_ULARGE_INTEGER = c_ulonglong
|
|
|
|
OLESTR = c_wchar_p
|
|
LPOLESTR = c_wchar_p
|
|
LPCOLESTR = c_wchar_p
|
|
LPWSTR = c_wchar_p
|
|
LPCWSTR = c_wchar_p
|
|
LPSTR = c_char_p
|
|
LPCSTR = c_char_p
|
|
LPVOID = c_void_p
|
|
LPCVOID = c_void_p
|
|
|
|
# These two types are pointer-sized unsigned and signed ints, respectively.
|
|
# At runtime, they are either c_[u]long or c_[u]longlong, depending on the host's pointer size
|
|
# (they are not really separate classes).
|
|
class WPARAM(_SimpleCData[int]): ...
|
|
class LPARAM(_SimpleCData[int]): ...
|
|
|
|
ATOM = WORD
|
|
LANGID = WORD
|
|
COLORREF = DWORD
|
|
LGRPID = DWORD
|
|
LCTYPE = DWORD
|
|
LCID = DWORD
|
|
|
|
HANDLE = c_void_p
|
|
HACCEL = HANDLE
|
|
HBITMAP = HANDLE
|
|
HBRUSH = HANDLE
|
|
HCOLORSPACE = HANDLE
|
|
HDC = HANDLE
|
|
HDESK = HANDLE
|
|
HDWP = HANDLE
|
|
HENHMETAFILE = HANDLE
|
|
HFONT = HANDLE
|
|
HGDIOBJ = HANDLE
|
|
HGLOBAL = HANDLE
|
|
HHOOK = HANDLE
|
|
HICON = HANDLE
|
|
HINSTANCE = HANDLE
|
|
HKEY = HANDLE
|
|
HKL = HANDLE
|
|
HLOCAL = HANDLE
|
|
HMENU = HANDLE
|
|
HMETAFILE = HANDLE
|
|
HMODULE = HANDLE
|
|
HMONITOR = HANDLE
|
|
HPALETTE = HANDLE
|
|
HPEN = HANDLE
|
|
HRGN = HANDLE
|
|
HRSRC = HANDLE
|
|
HSTR = HANDLE
|
|
HTASK = HANDLE
|
|
HWINSTA = HANDLE
|
|
HWND = HANDLE
|
|
SC_HANDLE = HANDLE
|
|
SERVICE_STATUS_HANDLE = HANDLE
|
|
|
|
_CIntLikeT = TypeVar("_CIntLikeT", bound=_SimpleCData[int])
|
|
_CIntLikeField: TypeAlias = _CField[_CIntLikeT, int, _CIntLikeT | int]
|
|
|
|
class RECT(Structure):
|
|
left: _CIntLikeField[LONG]
|
|
top: _CIntLikeField[LONG]
|
|
right: _CIntLikeField[LONG]
|
|
bottom: _CIntLikeField[LONG]
|
|
|
|
RECTL = RECT
|
|
_RECTL = RECT
|
|
tagRECT = RECT
|
|
|
|
class _SMALL_RECT(Structure):
|
|
Left: _CIntLikeField[SHORT]
|
|
Top: _CIntLikeField[SHORT]
|
|
Right: _CIntLikeField[SHORT]
|
|
Bottom: _CIntLikeField[SHORT]
|
|
|
|
SMALL_RECT = _SMALL_RECT
|
|
|
|
class _COORD(Structure):
|
|
X: _CIntLikeField[SHORT]
|
|
Y: _CIntLikeField[SHORT]
|
|
|
|
class POINT(Structure):
|
|
x: _CIntLikeField[LONG]
|
|
y: _CIntLikeField[LONG]
|
|
|
|
POINTL = POINT
|
|
_POINTL = POINT
|
|
tagPOINT = POINT
|
|
|
|
class SIZE(Structure):
|
|
cx: _CIntLikeField[LONG]
|
|
cy: _CIntLikeField[LONG]
|
|
|
|
SIZEL = SIZE
|
|
tagSIZE = SIZE
|
|
|
|
def RGB(red: int, green: int, blue: int) -> int: ...
|
|
|
|
class FILETIME(Structure):
|
|
dwLowDateTime: _CIntLikeField[DWORD]
|
|
dwHighDateTime: _CIntLikeField[DWORD]
|
|
|
|
_FILETIME = FILETIME
|
|
|
|
class MSG(Structure):
|
|
hWnd: _CField[HWND, int | None, HWND | int | None]
|
|
message: _CIntLikeField[UINT]
|
|
wParam: _CIntLikeField[WPARAM]
|
|
lParam: _CIntLikeField[LPARAM]
|
|
time: _CIntLikeField[DWORD]
|
|
pt: _CField[POINT, POINT, POINT]
|
|
|
|
tagMSG = MSG
|
|
MAX_PATH: int
|
|
|
|
class WIN32_FIND_DATAA(Structure):
|
|
dwFileAttributes: _CIntLikeField[DWORD]
|
|
ftCreationTime: _CField[FILETIME, FILETIME, FILETIME]
|
|
ftLastAccessTime: _CField[FILETIME, FILETIME, FILETIME]
|
|
ftLastWriteTime: _CField[FILETIME, FILETIME, FILETIME]
|
|
nFileSizeHigh: _CIntLikeField[DWORD]
|
|
nFileSizeLow: _CIntLikeField[DWORD]
|
|
dwReserved0: _CIntLikeField[DWORD]
|
|
dwReserved1: _CIntLikeField[DWORD]
|
|
cFileName: _CField[Array[CHAR], bytes, bytes]
|
|
cAlternateFileName: _CField[Array[CHAR], bytes, bytes]
|
|
|
|
class WIN32_FIND_DATAW(Structure):
|
|
dwFileAttributes: _CIntLikeField[DWORD]
|
|
ftCreationTime: _CField[FILETIME, FILETIME, FILETIME]
|
|
ftLastAccessTime: _CField[FILETIME, FILETIME, FILETIME]
|
|
ftLastWriteTime: _CField[FILETIME, FILETIME, FILETIME]
|
|
nFileSizeHigh: _CIntLikeField[DWORD]
|
|
nFileSizeLow: _CIntLikeField[DWORD]
|
|
dwReserved0: _CIntLikeField[DWORD]
|
|
dwReserved1: _CIntLikeField[DWORD]
|
|
cFileName: _CField[Array[WCHAR], str, str]
|
|
cAlternateFileName: _CField[Array[WCHAR], str, str]
|
|
|
|
# These are all defined with the POINTER() function, which keeps a cache and will
|
|
# return a previously created class if it can. The self-reported __name__
|
|
# of these classes is f"LP_{typ.__name__}", where typ is the original class
|
|
# passed in to the POINTER() function.
|
|
|
|
# LP_c_short
|
|
class PSHORT(_Pointer[SHORT]): ...
|
|
|
|
# LP_c_ushort
|
|
class PUSHORT(_Pointer[USHORT]): ...
|
|
|
|
PWORD = PUSHORT
|
|
LPWORD = PUSHORT
|
|
|
|
# LP_c_long
|
|
class PLONG(_Pointer[LONG]): ...
|
|
|
|
LPLONG = PLONG
|
|
PBOOL = PLONG
|
|
LPBOOL = PLONG
|
|
|
|
# LP_c_ulong
|
|
class PULONG(_Pointer[ULONG]): ...
|
|
|
|
PDWORD = PULONG
|
|
LPDWORD = PDWORD
|
|
LPCOLORREF = PDWORD
|
|
PLCID = PDWORD
|
|
|
|
# LP_c_int (or LP_c_long if int and long have the same size)
|
|
class PINT(_Pointer[INT]): ...
|
|
|
|
LPINT = PINT
|
|
|
|
# LP_c_uint (or LP_c_ulong if int and long have the same size)
|
|
class PUINT(_Pointer[UINT]): ...
|
|
|
|
LPUINT = PUINT
|
|
|
|
# LP_c_float
|
|
class PFLOAT(_Pointer[FLOAT]): ...
|
|
|
|
# LP_c_longlong (or LP_c_long if long and long long have the same size)
|
|
class PLARGE_INTEGER(_Pointer[LARGE_INTEGER]): ...
|
|
|
|
# LP_c_ulonglong (or LP_c_ulong if long and long long have the same size)
|
|
class PULARGE_INTEGER(_Pointer[ULARGE_INTEGER]): ...
|
|
|
|
# LP_c_byte types
|
|
class PBYTE(_Pointer[BYTE]): ...
|
|
|
|
LPBYTE = PBYTE
|
|
PBOOLEAN = PBYTE
|
|
|
|
# LP_c_char
|
|
class PCHAR(_Pointer[CHAR]): ...
|
|
|
|
# LP_c_wchar
|
|
class PWCHAR(_Pointer[WCHAR]): ...
|
|
|
|
# LP_c_void_p
|
|
class PHANDLE(_Pointer[HANDLE]): ...
|
|
|
|
LPHANDLE = PHANDLE
|
|
PHKEY = PHANDLE
|
|
LPHKL = PHANDLE
|
|
LPSC_HANDLE = PHANDLE
|
|
|
|
# LP_FILETIME
|
|
class PFILETIME(_Pointer[FILETIME]): ...
|
|
|
|
LPFILETIME = PFILETIME
|
|
|
|
# LP_MSG
|
|
class PMSG(_Pointer[MSG]): ...
|
|
|
|
LPMSG = PMSG
|
|
|
|
# LP_POINT
|
|
class PPOINT(_Pointer[POINT]): ...
|
|
|
|
LPPOINT = PPOINT
|
|
PPOINTL = PPOINT
|
|
|
|
# LP_RECT
|
|
class PRECT(_Pointer[RECT]): ...
|
|
|
|
LPRECT = PRECT
|
|
PRECTL = PRECT
|
|
LPRECTL = PRECT
|
|
|
|
# LP_SIZE
|
|
class PSIZE(_Pointer[SIZE]): ...
|
|
|
|
LPSIZE = PSIZE
|
|
PSIZEL = PSIZE
|
|
LPSIZEL = PSIZE
|
|
|
|
# LP__SMALL_RECT
|
|
class PSMALL_RECT(_Pointer[SMALL_RECT]): ...
|
|
|
|
# LP_WIN32_FIND_DATAA
|
|
class PWIN32_FIND_DATAA(_Pointer[WIN32_FIND_DATAA]): ...
|
|
|
|
LPWIN32_FIND_DATAA = PWIN32_FIND_DATAA
|
|
|
|
# LP_WIN32_FIND_DATAW
|
|
class PWIN32_FIND_DATAW(_Pointer[WIN32_FIND_DATAW]): ...
|
|
|
|
LPWIN32_FIND_DATAW = PWIN32_FIND_DATAW
|