Files

125 lines
5.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
from stdint import *
from win32.win32base import HANDLE, LPCSTR, LPCWSTR
define ENABLE_PROCESSED_INPUT = 0x0001
define ENABLE_LINE_INPUT = 0x0002
define ENABLE_ECHO_INPUT = 0x0004
define ENABLE_WINDOW_INPUT = 0x0008
define ENABLE_MOUSE_INPUT = 0x0010
define ENABLE_INSERT_MODE = 0x0020
define ENABLE_QUICK_EDIT_MODE = 0x0040
define ENABLE_EXTENDED_FLAGS = 0x0080
define ENABLE_PROCESSED_OUTPUT = 0x0001
define ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002
define ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004
define DISABLE_NEWLINE_AUTO_RETURN = 0x0008
define ENABLE_LVB_GRID_WORLDWIDE = 0x0010
# 颜色属性用 WORD(...) 显式定宽 uint16(SetConsoleTextAttribute 的 wAttributes: WORD)。
# `define X = <i32 字面量>` 是 i32,直接传给 WORD 形参会触发 32→16 隐式窄化。
define FOREGROUND_BLUE = WORD(0x0001)
define FOREGROUND_GREEN = WORD(0x0002)
define FOREGROUND_RED = WORD(0x0004)
define FOREGROUND_INTENSITY = WORD(0x0008)
define BACKGROUND_BLUE = WORD(0x0010)
define BACKGROUND_GREEN = WORD(0x0020)
define BACKGROUND_RED = WORD(0x0040)
define BACKGROUND_INTENSITY = WORD(0x0080)
define KEY_EVENT = 0x0001
define MOUSE_EVENT = 0x0002
define WINDOW_BUFFER_SIZE_EVENT = 0x0004
define MENU_EVENT = 0x0008
define FOCUS_EVENT = 0x0010
# Control event types (dwCtrlType arg of the SetConsoleCtrlHandler routine; consoleapi.h)
define CTRL_C_EVENT = 0# Ctrl+C
define CTRL_BREAK_EVENT = 1# Ctrl+Break
define CTRL_CLOSE_EVENT = 2# console window closed
define CTRL_LOGOFF_EVENT = 5# user logoff
define CTRL_SHUTDOWN_EVENT = 6# system shutdown
struct COORD:
X: SHORT
Y: SHORT
struct SMALL_RECT:
Left: SHORT
Top: SHORT
Right: SHORT
Bottom: SHORT
struct CONSOLE_SCREEN_BUFFER_INFO:
dwSize: COORD
dwCursorPosition: COORD
wAttributes: WORD
srWindow: SMALL_RECT
dwMaximumWindowSize: COORD
struct CONSOLE_CURSOR_INFO:
dwSize: DWORD
bVisible: BOOL
struct CHAR_INFO:
UnicodeChar: WCHAR
Attributes: WORD
struct KEY_EVENT_RECORD:
bKeyDown: BOOL
wRepeatCount: WORD
wVirtualKeyCode: WORD
wVirtualScanCode: WORD
uChar: WCHAR
dwControlKeyState: DWORD
struct MOUSE_EVENT_RECORD:
dwMousePosition: COORD
dwButtonState: DWORD
dwControlKeyState: DWORD
dwEventFlags: DWORD
struct WINDOW_BUFFER_SIZE_RECORD:
dwSize: COORD
struct INPUT_RECORD:
EventType: WORD
Event: KEY_EVENT_RECORD
extern def SetConsoleOutputCP(codepage: UINT) -> BOOL
extern def SetConsoleCP(codepage: UINT) -> BOOL
extern def GetConsoleCP() -> UINT
extern def GetConsoleOutputCP() -> UINT
extern def GetConsoleScreenBufferInfo(hConsoleOutput: HANDLE, lpConsoleScreenBufferInfo: CONSOLE_SCREEN_BUFFER_INFO*) -> BOOL
extern def SetConsoleScreenBufferSize(hConsoleOutput: HANDLE, dwSize: COORD) -> BOOL
extern def SetConsoleCursorPosition(hConsoleOutput: HANDLE, dwCursorPosition: COORD) -> BOOL
extern def GetConsoleCursorInfo(hConsoleOutput: HANDLE, lpConsoleCursorInfo: CONSOLE_CURSOR_INFO*) -> BOOL
extern def SetConsoleCursorInfo(hConsoleOutput: HANDLE, lpConsoleCursorInfo: CONSOLE_CURSOR_INFO*) -> BOOL
extern def SetConsoleTextAttribute(hConsoleOutput: HANDLE, wAttributes: WORD) -> BOOL
extern def FillConsoleOutputCharacterA(hConsoleOutput: HANDLE, cCharacter: char, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfCharsWritten: ULONG*) -> BOOL
extern def FillConsoleOutputCharacterW(hConsoleOutput: HANDLE, cCharacter: WCHAR, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfCharsWritten: ULONG*) -> BOOL
extern def FillConsoleOutputAttribute(hConsoleOutput: HANDLE, wAttribute: WORD, nLength: ULONG, dwWriteCoord: COORD, lpNumberOfAttrsWritten: ULONG*) -> BOOL
extern def WriteConsoleA(hConsoleOutput: HANDLE, lpBuffer: const VOIDPTR, nNumberOfCharsToWrite: ULONG, lpNumberOfCharsWritten: ULONG*, lpReserved: VOIDPTR) -> BOOL
extern def WriteConsoleW(hConsoleOutput: HANDLE, lpBuffer: const VOIDPTR, nNumberOfCharsToWrite: ULONG, lpNumberOfCharsWritten: ULONG*, lpReserved: VOIDPTR) -> BOOL
extern def ReadConsoleA(hConsoleInput: HANDLE, lpBuffer: VOIDPTR, nNumberOfCharsToRead: ULONG, lpNumberOfCharsRead: ULONG*, pInputControl: VOIDPTR) -> BOOL
extern def ReadConsoleW(hConsoleInput: HANDLE, lpBuffer: VOIDPTR, nNumberOfCharsToRead: ULONG, lpNumberOfCharsRead: ULONG*, pInputControl: VOIDPTR) -> BOOL
extern def GetConsoleMode(hConsoleHandle: HANDLE, lpMode: ULONG*) -> BOOL
extern def SetConsoleMode(hConsoleHandle: HANDLE, dwMode: ULONG) -> BOOL
extern def ReadConsoleInputA(hConsoleInput: HANDLE, lpBuffer: INPUT_RECORD*, nLength: ULONG, lpNumberOfEventsRead: ULONG*) -> BOOL
extern def ReadConsoleInputW(hConsoleInput: HANDLE, lpBuffer: INPUT_RECORD*, nLength: ULONG, lpNumberOfEventsRead: ULONG*) -> BOOL
extern def GetNumberOfConsoleInputEvents(hConsoleInput: HANDLE, lpNumberOfEvents: ULONG*) -> BOOL
extern def FlushConsoleInputBuffer(hConsoleInput: HANDLE) -> BOOL
extern def SetConsoleTitleA(lpConsoleTitle: LPCSTR) -> BOOL
extern def SetConsoleTitleW(lpConsoleTitle: LPCWSTR) -> BOOL
extern def GetConsoleTitleA(lpConsoleTitle: CHARPTR, nSize: ULONG) -> ULONG
extern def GetConsoleTitleW(lpConsoleTitle: WCHARPTR, nSize: ULONG) -> ULONG
extern def AllocConsole() -> BOOL
extern def FreeConsole() -> BOOL
extern def SetConsoleWindowInfo(hConsoleOutput: HANDLE, bAbsolute: BOOL, lpConsoleWindow: SMALL_RECT*) -> BOOL
extern def ScrollConsoleScreenBufferA(hConsoleOutput: HANDLE, lpScrollRectangle: SMALL_RECT*, lpClipRectangle: SMALL_RECT*, dwDestinationOrigin: COORD, lpFill: CHAR_INFO*) -> BOOL
# SetConsoleCtrlHandler registration/removal (consoleapi.h / kernel32.dll): pass the routine name directly, bitcast by VPC (function pointers declared as rawptr).
# Returns 0 on failure (see GetLastError); Add=FALSE removes the registered routine.
extern def SetConsoleCtrlHandler(HandlerRoutine: rawptr, Add: BOOL) -> BOOL