560 lines
11 KiB
C
560 lines
11 KiB
C
|
#ifndef NOGDI
|
||
|
|
||
|
typedef struct _CONSOLE_GRAPHICS_BUFFER_INFO {
|
||
|
DWORD dwBitMapInfoLength;
|
||
|
LPBITMAPINFO lpBitMapInfo;
|
||
|
DWORD dwUsage;
|
||
|
HANDLE hMutex;
|
||
|
PVOID lpBitMap;
|
||
|
} CONSOLE_GRAPHICS_BUFFER_INFO, *PCONSOLE_GRAPHICS_BUFFER_INFO;
|
||
|
|
||
|
#endif // NOGDI
|
||
|
|
||
|
#define CONSOLE_GRAPHICS_BUFFER 2
|
||
|
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
InvalidateConsoleDIBits(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN PSMALL_RECT lpRect
|
||
|
);
|
||
|
|
||
|
#define SYSTEM_ROOT_CONSOLE_EVENT 3
|
||
|
|
||
|
VOID
|
||
|
WINAPI
|
||
|
SetLastConsoleEventActive( VOID );
|
||
|
|
||
|
#define VDM_HIDE_WINDOW 1
|
||
|
#define VDM_IS_ICONIC 2
|
||
|
#define VDM_CLIENT_RECT 3
|
||
|
#define VDM_CLIENT_TO_SCREEN 4
|
||
|
#define VDM_SCREEN_TO_CLIENT 5
|
||
|
#define VDM_IS_HIDDEN 6
|
||
|
#define VDM_FULLSCREEN_NOPAINT 7
|
||
|
#if defined(FE_SB)
|
||
|
#define VDM_SET_VIDEO_MODE 8
|
||
|
#if defined(i386)
|
||
|
#define VDM_SAVE_RESTORE_HW_STATE 9
|
||
|
#define VDM_VIDEO_IOCTL 10
|
||
|
|
||
|
typedef struct _VDM_IOCTL_PARAM {
|
||
|
DWORD dwIoControlCode;
|
||
|
LPVOID lpvInBuffer;
|
||
|
DWORD cbInBuffer;
|
||
|
LPVOID lpvOutBuffer;
|
||
|
DWORD cbOutBuffer;
|
||
|
} VDM_IOCTL_PARAM, *LPVDM_IOCTL_PARAM;
|
||
|
#endif /* i386 */
|
||
|
#endif /* FE_SB */
|
||
|
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
VDMConsoleOperation(
|
||
|
IN DWORD iFunction,
|
||
|
IN OUT LPVOID lpData
|
||
|
);
|
||
|
|
||
|
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
SetConsoleIcon(
|
||
|
IN HICON hIcon
|
||
|
);
|
||
|
|
||
|
//
|
||
|
// These console font APIs don't appear to be used anywhere. Maybe they
|
||
|
// should be removed.
|
||
|
//
|
||
|
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
SetConsoleFont(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN DWORD nFont
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
GetConsoleFontInfo(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN BOOL bMaximumWindow,
|
||
|
IN DWORD nLength,
|
||
|
OUT PCONSOLE_FONT_INFO lpConsoleFontInfo
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
WINAPI
|
||
|
GetNumberOfConsoleFonts(
|
||
|
VOID
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
SetConsoleCursor(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN HCURSOR hCursor
|
||
|
);
|
||
|
|
||
|
int
|
||
|
WINAPI
|
||
|
ShowConsoleCursor(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN BOOL bShow
|
||
|
);
|
||
|
|
||
|
HMENU
|
||
|
APIENTRY
|
||
|
ConsoleMenuControl(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN UINT dwCommandIdLow,
|
||
|
IN UINT dwCommandIdHigh
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
SetConsolePalette(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN HPALETTE hPalette,
|
||
|
IN UINT dwUsage
|
||
|
);
|
||
|
|
||
|
#define CONSOLE_FULLSCREEN_MODE 1
|
||
|
#define CONSOLE_WINDOWED_MODE 2
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleDisplayMode(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN DWORD dwFlags,
|
||
|
OUT PCOORD lpNewScreenBufferDimensions
|
||
|
);
|
||
|
|
||
|
#define CONSOLE_UNREGISTER_VDM 0
|
||
|
#define CONSOLE_REGISTER_VDM 1
|
||
|
#define CONSOLE_REGISTER_WOW 2
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
RegisterConsoleVDM(
|
||
|
IN DWORD dwRegisterFlags,
|
||
|
IN HANDLE hStartHardwareEvent,
|
||
|
IN HANDLE hEndHardwareEvent,
|
||
|
IN HANDLE hErrorhardwareEvent,
|
||
|
IN DWORD Reserved,
|
||
|
OUT LPDWORD lpStateLength,
|
||
|
OUT PVOID *lpState,
|
||
|
IN LPWSTR lpVDMBufferSectionName,
|
||
|
IN DWORD dwVDMBufferSectionNameLength,
|
||
|
IN COORD VDMBufferSize OPTIONAL,
|
||
|
OUT PVOID *lpVDMBuffer
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
GetConsoleHardwareState(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
OUT PCOORD lpResolution,
|
||
|
OUT PCOORD lpFontSize
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleHardwareState(
|
||
|
IN HANDLE hConsoleOutput,
|
||
|
IN COORD dwResolution,
|
||
|
IN COORD dwFontSize
|
||
|
);
|
||
|
|
||
|
|
||
|
|
||
|
//
|
||
|
// aliasing apis
|
||
|
//
|
||
|
|
||
|
BOOL
|
||
|
AddConsoleAliasA(
|
||
|
IN LPSTR Source,
|
||
|
IN LPSTR Target,
|
||
|
IN LPSTR ExeName
|
||
|
);
|
||
|
BOOL
|
||
|
AddConsoleAliasW(
|
||
|
IN LPWSTR Source,
|
||
|
IN LPWSTR Target,
|
||
|
IN LPWSTR ExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define AddConsoleAlias AddConsoleAliasW
|
||
|
#else
|
||
|
#define AddConsoleAlias AddConsoleAliasA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
DWORD
|
||
|
GetConsoleAliasA(
|
||
|
IN LPSTR Source,
|
||
|
OUT LPSTR TargetBuffer,
|
||
|
IN DWORD TargetBufferLength,
|
||
|
IN LPSTR ExeName
|
||
|
);
|
||
|
DWORD
|
||
|
GetConsoleAliasW(
|
||
|
IN LPWSTR Source,
|
||
|
OUT LPWSTR TargetBuffer,
|
||
|
IN DWORD TargetBufferLength,
|
||
|
IN LPWSTR ExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define GetConsoleAlias GetConsoleAliasW
|
||
|
#else
|
||
|
#define GetConsoleAlias GetConsoleAliasA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
DWORD
|
||
|
GetConsoleAliasesLengthA(
|
||
|
IN LPSTR ExeName
|
||
|
);
|
||
|
DWORD
|
||
|
GetConsoleAliasesLengthW(
|
||
|
IN LPWSTR ExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define GetConsoleAliasesLength GetConsoleAliasesLengthW
|
||
|
#else
|
||
|
#define GetConsoleAliasesLength GetConsoleAliasesLengthA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
DWORD
|
||
|
GetConsoleAliasExesLengthA( VOID );
|
||
|
DWORD
|
||
|
GetConsoleAliasExesLengthW( VOID );
|
||
|
#ifdef UNICODE
|
||
|
#define GetConsoleAliasExesLength GetConsoleAliasExesLengthW
|
||
|
#else
|
||
|
#define GetConsoleAliasExesLength GetConsoleAliasExesLengthA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
DWORD
|
||
|
GetConsoleAliasesA(
|
||
|
OUT LPSTR AliasBuffer,
|
||
|
IN DWORD AliasBufferLength,
|
||
|
IN LPSTR ExeName
|
||
|
);
|
||
|
DWORD
|
||
|
GetConsoleAliasesW(
|
||
|
OUT LPWSTR AliasBuffer,
|
||
|
IN DWORD AliasBufferLength,
|
||
|
IN LPWSTR ExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define GetConsoleAliases GetConsoleAliasesW
|
||
|
#else
|
||
|
#define GetConsoleAliases GetConsoleAliasesA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
DWORD
|
||
|
GetConsoleAliasExesA(
|
||
|
OUT LPSTR ExeNameBuffer,
|
||
|
IN DWORD ExeNameBufferLength
|
||
|
);
|
||
|
DWORD
|
||
|
GetConsoleAliasExesW(
|
||
|
OUT LPWSTR ExeNameBuffer,
|
||
|
IN DWORD ExeNameBufferLength
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define GetConsoleAliasExes GetConsoleAliasExesW
|
||
|
#else
|
||
|
#define GetConsoleAliasExes GetConsoleAliasExesA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
VOID
|
||
|
ExpungeConsoleCommandHistoryA(
|
||
|
IN LPSTR ExeName
|
||
|
);
|
||
|
VOID
|
||
|
ExpungeConsoleCommandHistoryW(
|
||
|
IN LPWSTR ExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define ExpungeConsoleCommandHistory ExpungeConsoleCommandHistoryW
|
||
|
#else
|
||
|
#define ExpungeConsoleCommandHistory ExpungeConsoleCommandHistoryA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
BOOL
|
||
|
SetConsoleNumberOfCommandsA(
|
||
|
IN DWORD Number,
|
||
|
IN LPSTR ExeName
|
||
|
);
|
||
|
BOOL
|
||
|
SetConsoleNumberOfCommandsW(
|
||
|
IN DWORD Number,
|
||
|
IN LPWSTR ExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define SetConsoleNumberOfCommands SetConsoleNumberOfCommandsW
|
||
|
#else
|
||
|
#define SetConsoleNumberOfCommands SetConsoleNumberOfCommandsA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
DWORD
|
||
|
GetConsoleCommandHistoryLengthA(
|
||
|
IN LPSTR ExeName
|
||
|
);
|
||
|
DWORD
|
||
|
GetConsoleCommandHistoryLengthW(
|
||
|
IN LPWSTR ExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define GetConsoleCommandHistoryLength GetConsoleCommandHistoryLengthW
|
||
|
#else
|
||
|
#define GetConsoleCommandHistoryLength GetConsoleCommandHistoryLengthA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
DWORD
|
||
|
GetConsoleCommandHistoryA(
|
||
|
OUT LPSTR Commands,
|
||
|
IN DWORD CommandBufferLength,
|
||
|
IN LPSTR ExeName
|
||
|
);
|
||
|
DWORD
|
||
|
GetConsoleCommandHistoryW(
|
||
|
OUT LPWSTR Commands,
|
||
|
IN DWORD CommandBufferLength,
|
||
|
IN LPWSTR ExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define GetConsoleCommandHistory GetConsoleCommandHistoryW
|
||
|
#else
|
||
|
#define GetConsoleCommandHistory GetConsoleCommandHistoryA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
#define CONSOLE_OVERSTRIKE 1
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleCommandHistoryMode(
|
||
|
IN DWORD Flags
|
||
|
);
|
||
|
|
||
|
#define CONSOLE_NOSHORTCUTKEY 0 /* no shortcut key */
|
||
|
#define CONSOLE_ALTTAB 1 /* Alt + Tab */
|
||
|
#define CONSOLE_ALTESC (1 << 1) /* Alt + Escape */
|
||
|
#define CONSOLE_ALTSPACE (1 << 2) /* Alt + Space */
|
||
|
#define CONSOLE_ALTENTER (1 << 3) /* Alt + Enter */
|
||
|
#define CONSOLE_ALTPRTSC (1 << 4) /* Alt Print screen */
|
||
|
#define CONSOLE_PRTSC (1 << 5) /* Print screen */
|
||
|
#define CONSOLE_CTRLESC (1 << 6) /* Ctrl + Escape */
|
||
|
|
||
|
typedef struct _APPKEY {
|
||
|
WORD Modifier;
|
||
|
WORD ScanCode;
|
||
|
} APPKEY, *LPAPPKEY;
|
||
|
|
||
|
#define CONSOLE_MODIFIER_SHIFT 0x0003 // Left shift key
|
||
|
#define CONSOLE_MODIFIER_CONTROL 0x0004 // Either Control shift key
|
||
|
#define CONSOLE_MODIFIER_ALT 0x0008 // Either Alt shift key
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleKeyShortcuts(
|
||
|
IN BOOL bSet,
|
||
|
IN BYTE bReserveKeys,
|
||
|
IN LPAPPKEY lpAppKeys,
|
||
|
IN DWORD dwNumAppKeys
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleMenuClose(
|
||
|
IN BOOL bEnable
|
||
|
);
|
||
|
|
||
|
DWORD
|
||
|
GetConsoleInputExeNameA(
|
||
|
IN DWORD nBufferLength,
|
||
|
OUT LPSTR lpBuffer
|
||
|
);
|
||
|
DWORD
|
||
|
GetConsoleInputExeNameW(
|
||
|
IN DWORD nBufferLength,
|
||
|
OUT LPWSTR lpBuffer
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define GetConsoleInputExeName GetConsoleInputExeNameW
|
||
|
#else
|
||
|
#define GetConsoleInputExeName GetConsoleInputExeNameA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
BOOL
|
||
|
SetConsoleInputExeNameA(
|
||
|
IN LPSTR lpExeName
|
||
|
);
|
||
|
BOOL
|
||
|
SetConsoleInputExeNameW(
|
||
|
IN LPWSTR lpExeName
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define SetConsoleInputExeName SetConsoleInputExeNameW
|
||
|
#else
|
||
|
#define SetConsoleInputExeName SetConsoleInputExeNameA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
typedef struct _CONSOLE_READCONSOLE_CONTROL {
|
||
|
IN ULONG nLength; // sizeof( CONSOLE_READCONSOLE_CONTROL )
|
||
|
IN ULONG nInitialChars;
|
||
|
IN ULONG dwCtrlWakeupMask;
|
||
|
OUT ULONG dwControlKeyState;
|
||
|
} CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
|
||
|
|
||
|
|
||
|
#define CONSOLE_ADD_SUBST 1
|
||
|
#define CONSOLE_REMOVE_SUBST 2
|
||
|
#define CONSOLE_QUERY_SUBST 3
|
||
|
|
||
|
BOOL
|
||
|
ConsoleSubst(
|
||
|
IN DWORD dwDriveNumber,
|
||
|
IN DWORD dwFlag,
|
||
|
IN OUT LPWSTR lpPhysicalDriveBuffer,
|
||
|
IN DWORD dwPhysicalDriveBufferLength
|
||
|
);
|
||
|
|
||
|
#define CONSOLE_READ_NOREMOVE 0x0001
|
||
|
#define CONSOLE_READ_NOWAIT 0x0002
|
||
|
|
||
|
#define CONSOLE_READ_VALID (CONSOLE_READ_NOREMOVE | CONSOLE_READ_NOWAIT)
|
||
|
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
ReadConsoleInputExA(
|
||
|
HANDLE hConsoleInput,
|
||
|
PINPUT_RECORD lpBuffer,
|
||
|
DWORD nLength,
|
||
|
LPDWORD lpNumberOfEventsRead,
|
||
|
USHORT wFlags
|
||
|
);
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
ReadConsoleInputExW(
|
||
|
HANDLE hConsoleInput,
|
||
|
PINPUT_RECORD lpBuffer,
|
||
|
DWORD nLength,
|
||
|
LPDWORD lpNumberOfEventsRead,
|
||
|
USHORT wFlags
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define ReadConsoleInputEx ReadConsoleInputExW
|
||
|
#else
|
||
|
#define ReadConsoleInputEx ReadConsoleInputExA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
WriteConsoleInputVDMA(
|
||
|
HANDLE hConsoleInput,
|
||
|
PINPUT_RECORD lpBuffer,
|
||
|
DWORD nLength,
|
||
|
LPDWORD lpNumberOfEventsWritten
|
||
|
);
|
||
|
BOOL
|
||
|
WINAPI
|
||
|
WriteConsoleInputVDMW(
|
||
|
HANDLE hConsoleInput,
|
||
|
PINPUT_RECORD lpBuffer,
|
||
|
DWORD nLength,
|
||
|
LPDWORD lpNumberOfEventsWritten
|
||
|
);
|
||
|
#ifdef UNICODE
|
||
|
#define WriteConsoleInputVDM WriteConsoleInputVDMW
|
||
|
#else
|
||
|
#define WriteConsoleInputVDM WriteConsoleInputVDMA
|
||
|
#endif // !UNICODE
|
||
|
|
||
|
|
||
|
#if defined(FE_SB)
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
GetConsoleNlsMode(
|
||
|
IN HANDLE hConsole,
|
||
|
OUT PDWORD lpdwNlsMode
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleNlsMode(
|
||
|
IN HANDLE hConsole,
|
||
|
IN DWORD fdwNlsMode
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
GetConsoleCharType(
|
||
|
IN HANDLE hConsole,
|
||
|
IN COORD coordCheck,
|
||
|
OUT PDWORD pdwType
|
||
|
);
|
||
|
|
||
|
#define CHAR_TYPE_SBCS 0 // Displayed SBCS character
|
||
|
#define CHAR_TYPE_LEADING 2 // Displayed leading byte of DBCS
|
||
|
#define CHAR_TYPE_TRAILING 3 // Displayed trailing byte of DBCS
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleLocalEUDC(
|
||
|
IN HANDLE hConsoleHandle,
|
||
|
IN WORD wCodePoint,
|
||
|
IN COORD cFontSize,
|
||
|
IN PCHAR lpSB
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleCursorMode(
|
||
|
IN HANDLE hConsoleHandle,
|
||
|
IN BOOL Blink,
|
||
|
IN BOOL DBEnable
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
GetConsoleCursorMode(
|
||
|
IN HANDLE hConsoleHandle,
|
||
|
OUT PBOOL pbBlink,
|
||
|
OUT PBOOL pbDBEnable
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
RegisterConsoleOS2(
|
||
|
IN BOOL fOs2Register
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
SetConsoleOS2OemFormat(
|
||
|
IN BOOL fOs2OemFormat
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
IsConsoleFullWidth(
|
||
|
IN HDC hDC,
|
||
|
IN DWORD CodePage,
|
||
|
IN WCHAR wch
|
||
|
);
|
||
|
|
||
|
#if defined(FE_IME)
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
RegisterConsoleIME(
|
||
|
IN HWND hWndConsoleIME,
|
||
|
OUT DWORD *dwConsoleThreadId
|
||
|
);
|
||
|
|
||
|
BOOL
|
||
|
APIENTRY
|
||
|
UnregisterConsoleIME(
|
||
|
);
|
||
|
#endif // FE_IME
|
||
|
#endif // FE_SB
|