mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 05:15:41 +00:00
[KERNEL32-CONSRV]
Implement (Get/Set)ConsoleDisplayMode. [PSDK] Reorganize wincon.h a little bit and add few new flags from MSDN / Wine's wincon.h (which was up-to-date compared to ours) and from https://sites.google.com/site/marckupper/utilities/setconsolemode (the ENABLE_AUTO_POSITION flag which happens to be set by default for consoles on Windows Vista+). [CONSRV] - Fix the implementation of Srv(Get/Set)ConsoleMode. - Try to fix some mouse handling problems. - Add a TEMPORARY HACK!!!! to circumvent one of the many bugs we have in user32/win32k concerning handling right-mouse clicks on windows titlebars. The comment: /* * HACK: !! Because, when we deal with WM_RBUTTON* and we do not * call after that DefWindowProc, on ReactOS, right-clicks on the * (non-client) application title-bar does not display the system * menu and does not trigger a WM_NCRBUTTONUP message too. * See: http://git.reactos.org/?p=reactos.git;a=blob;f=reactos/win32ss/user/user32/windows/defwnd.c;hb=HEAD#l1103 * and line 1135 too. */ Tested with Far Manager 3 (TM) Happy Easter !! svn path=/branches/ros-csrss/; revision=58632
This commit is contained in:
parent
146e44fdf7
commit
8a45602a5b
10 changed files with 431 additions and 164 deletions
|
@ -296,22 +296,30 @@ DuplicateConsoleHandle(HANDLE hConsole,
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
INT
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
GetConsoleDisplayMode(LPDWORD lpdwMode)
|
GetConsoleDisplayMode(LPDWORD lpModeFlags)
|
||||||
/*
|
|
||||||
* FUNCTION: Get the console display mode
|
|
||||||
* ARGUMENTS:
|
|
||||||
* lpdwMode - Address of variable that receives the current value
|
|
||||||
* of display mode
|
|
||||||
* STATUS: Undocumented
|
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
DPRINT1("GetConsoleDisplayMode(0x%x) UNIMPLEMENTED!\n", lpdwMode);
|
NTSTATUS Status;
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
return 0;
|
PCONSOLE_GETDISPLAYMODE GetDisplayModeRequest = &ApiMessage.Data.GetDisplayModeRequest;
|
||||||
|
|
||||||
|
// GetDisplayModeRequest->OutputHandle = hConsoleOutput;
|
||||||
|
|
||||||
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
|
NULL,
|
||||||
|
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepGetDisplayMode),
|
||||||
|
sizeof(CONSOLE_GETDISPLAYMODE));
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
BaseSetLastNTError(Status);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*lpModeFlags = GetDisplayModeRequest->DisplayMode;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -359,6 +367,8 @@ GetConsoleHardwareState(HANDLE hConsoleOutput,
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
PCONSOLE_GETSETHWSTATE HardwareStateRequest = &ApiMessage.Data.HardwareStateRequest;
|
PCONSOLE_GETSETHWSTATE HardwareStateRequest = &ApiMessage.Data.HardwareStateRequest;
|
||||||
|
|
||||||
|
DPRINT1("GetConsoleHardwareState(%d, 0x%p) UNIMPLEMENTED!\n", Flags, State);
|
||||||
|
|
||||||
HardwareStateRequest->OutputHandle = hConsoleOutput;
|
HardwareStateRequest->OutputHandle = hConsoleOutput;
|
||||||
|
|
||||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
|
@ -499,24 +509,34 @@ SetConsoleCursor(DWORD Unknown0,
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @unimplemented
|
* @implemented
|
||||||
*/
|
*/
|
||||||
BOOL
|
BOOL
|
||||||
WINAPI
|
WINAPI
|
||||||
SetConsoleDisplayMode(HANDLE hOut,
|
SetConsoleDisplayMode(HANDLE hConsoleOutput,
|
||||||
DWORD dwNewMode,
|
DWORD dwFlags,
|
||||||
PCOORD lpdwOldMode)
|
PCOORD lpNewScreenBufferDimensions)
|
||||||
/*
|
|
||||||
* FUNCTION: Set the console display mode.
|
|
||||||
* ARGUMENTS:
|
|
||||||
* hOut - Standard output handle.
|
|
||||||
* dwNewMode - New mode.
|
|
||||||
* lpdwOldMode - Address of a variable that receives the old mode.
|
|
||||||
*/
|
|
||||||
{
|
{
|
||||||
DPRINT1("SetConsoleDisplayMode(0x%x, 0x%x, 0x%p) UNIMPLEMENTED!\n", hOut, dwNewMode, lpdwOldMode);
|
NTSTATUS Status;
|
||||||
SetLastError(ERROR_CALL_NOT_IMPLEMENTED);
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
return FALSE;
|
PCONSOLE_SETDISPLAYMODE SetDisplayModeRequest = &ApiMessage.Data.SetDisplayModeRequest;
|
||||||
|
|
||||||
|
SetDisplayModeRequest->OutputHandle = hConsoleOutput;
|
||||||
|
SetDisplayModeRequest->DisplayMode = dwFlags;
|
||||||
|
SetDisplayModeRequest->NewSBDim = (COORD){0,0};
|
||||||
|
|
||||||
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
|
NULL,
|
||||||
|
CSR_CREATE_API_NUMBER(CONSRV_SERVERDLL_INDEX, ConsolepSetDisplayMode),
|
||||||
|
sizeof(CONSOLE_SETDISPLAYMODE));
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
BaseSetLastNTError(Status);
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
|
||||||
|
*lpNewScreenBufferDimensions = SetDisplayModeRequest->NewSBDim;
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -547,6 +567,8 @@ SetConsoleHardwareState(HANDLE hConsoleOutput,
|
||||||
CONSOLE_API_MESSAGE ApiMessage;
|
CONSOLE_API_MESSAGE ApiMessage;
|
||||||
PCONSOLE_GETSETHWSTATE HardwareStateRequest = &ApiMessage.Data.HardwareStateRequest;
|
PCONSOLE_GETSETHWSTATE HardwareStateRequest = &ApiMessage.Data.HardwareStateRequest;
|
||||||
|
|
||||||
|
DPRINT1("SetConsoleHardwareState(%d, %d) UNIMPLEMENTED!\n", Flags, State);
|
||||||
|
|
||||||
HardwareStateRequest->OutputHandle = hConsoleOutput;
|
HardwareStateRequest->OutputHandle = hConsoleOutput;
|
||||||
HardwareStateRequest->State = State;
|
HardwareStateRequest->State = State;
|
||||||
|
|
||||||
|
@ -1144,7 +1166,7 @@ SetConsoleMode(HANDLE hConsoleHandle,
|
||||||
PCONSOLE_GETSETCONSOLEMODE ConsoleModeRequest = &ApiMessage.Data.ConsoleModeRequest;
|
PCONSOLE_GETSETCONSOLEMODE ConsoleModeRequest = &ApiMessage.Data.ConsoleModeRequest;
|
||||||
|
|
||||||
ConsoleModeRequest->ConsoleHandle = hConsoleHandle;
|
ConsoleModeRequest->ConsoleHandle = hConsoleHandle;
|
||||||
ConsoleModeRequest->ConsoleMode = dwMode;
|
ConsoleModeRequest->ConsoleMode = dwMode;
|
||||||
|
|
||||||
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
Status = CsrClientCallServer((PCSR_API_MESSAGE)&ApiMessage,
|
||||||
NULL,
|
NULL,
|
||||||
|
|
|
@ -14,17 +14,44 @@ extern "C" {
|
||||||
#pragma warning(disable:4820)
|
#pragma warning(disable:4820)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Special PID for parent process for AttachConsole API
|
||||||
|
*/
|
||||||
|
#if (_WIN32_WINNT >= 0x0501)
|
||||||
|
#define ATTACH_PARENT_PROCESS ((DWORD)-1)
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Console display modes
|
||||||
|
*/
|
||||||
|
#define CONSOLE_FULLSCREEN 1
|
||||||
|
#define CONSOLE_FULLSCREEN_HARDWARE 2
|
||||||
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
|
#define CONSOLE_OVERSTRIKE 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define CONSOLE_FULLSCREEN_MODE 1
|
||||||
|
#define CONSOLE_WINDOWED_MODE 2
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Color attributes for text and screen background
|
* Color attributes for text and screen background
|
||||||
*/
|
*/
|
||||||
#define FOREGROUND_BLUE 0x0001
|
#define FOREGROUND_BLUE 0x0001
|
||||||
#define FOREGROUND_GREEN 0x0002
|
#define FOREGROUND_GREEN 0x0002
|
||||||
#define FOREGROUND_RED 0x0004
|
#define FOREGROUND_RED 0x0004
|
||||||
#define FOREGROUND_INTENSITY 0x0008
|
#define FOREGROUND_INTENSITY 0x0008
|
||||||
#define BACKGROUND_BLUE 0x0010
|
#define BACKGROUND_BLUE 0x0010
|
||||||
#define BACKGROUND_GREEN 0x0020
|
#define BACKGROUND_GREEN 0x0020
|
||||||
#define BACKGROUND_RED 0x0040
|
#define BACKGROUND_RED 0x0040
|
||||||
#define BACKGROUND_INTENSITY 0x0080
|
#define BACKGROUND_INTENSITY 0x0080
|
||||||
|
|
||||||
|
#define COMMON_LVB_LEADING_BYTE 0x0100
|
||||||
|
#define COMMON_LVB_TRAILING_BYTE 0x0200
|
||||||
|
#define COMMON_LVB_GRID_HORIZONTAL 0x0400
|
||||||
|
#define COMMON_LVB_GRID_LVERTICAL 0x0800
|
||||||
|
#define COMMON_LVB_GRID_RVERTICAL 0x1000
|
||||||
|
#define COMMON_LVB_REVERSE_VIDEO 0x4000
|
||||||
|
#define COMMON_LVB_UNDERSCORE 0x8000
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Control handler codes
|
* Control handler codes
|
||||||
|
@ -38,20 +65,39 @@ extern "C" {
|
||||||
/*
|
/*
|
||||||
* Input mode flags
|
* Input mode flags
|
||||||
*/
|
*/
|
||||||
#define ENABLE_PROCESSED_INPUT 0x0001
|
#define ENABLE_PROCESSED_INPUT 0x0001
|
||||||
#define ENABLE_LINE_INPUT 0x0002
|
#define ENABLE_LINE_INPUT 0x0002
|
||||||
#define ENABLE_ECHO_INPUT 0x0004
|
#define ENABLE_ECHO_INPUT 0x0004
|
||||||
#define ENABLE_WINDOW_INPUT 0x0008
|
#define ENABLE_WINDOW_INPUT 0x0008
|
||||||
#define ENABLE_MOUSE_INPUT 0x0010
|
#define ENABLE_MOUSE_INPUT 0x0010
|
||||||
#define ENABLE_INSERT_MODE 0x0020
|
#define ENABLE_INSERT_MODE 0x0020
|
||||||
#define ENABLE_QUICK_EDIT_MODE 0x0040
|
#define ENABLE_QUICK_EDIT_MODE 0x0040
|
||||||
#define ENABLE_EXTENDED_FLAGS 0x0080
|
#define ENABLE_EXTENDED_FLAGS 0x0080
|
||||||
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
|
#define ENABLE_AUTO_POSITION 0x0100
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Output mode flags
|
* Output mode flags
|
||||||
*/
|
*/
|
||||||
#define ENABLE_PROCESSED_OUTPUT 0x0001
|
#define ENABLE_PROCESSED_OUTPUT 0x0001
|
||||||
#define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
|
#define ENABLE_WRAP_AT_EOL_OUTPUT 0x0002
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Console selection flags
|
||||||
|
*/
|
||||||
|
#define CONSOLE_NO_SELECTION 0x0000
|
||||||
|
#define CONSOLE_SELECTION_IN_PROGRESS 0x0001
|
||||||
|
#define CONSOLE_SELECTION_NOT_EMPTY 0x0002
|
||||||
|
#define CONSOLE_MOUSE_SELECTION 0x0004
|
||||||
|
#define CONSOLE_MOUSE_DOWN 0x0008
|
||||||
|
|
||||||
|
/*
|
||||||
|
* History duplicate flags
|
||||||
|
*/
|
||||||
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
|
#define HISTORY_NO_DUP_FLAG 0x0001
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Event types
|
* Event types
|
||||||
|
@ -102,53 +148,53 @@ typedef struct _CONSOLE_READCONSOLE_CONTROL {
|
||||||
} CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
|
} CONSOLE_READCONSOLE_CONTROL, *PCONSOLE_READCONSOLE_CONTROL;
|
||||||
|
|
||||||
typedef struct _CHAR_INFO {
|
typedef struct _CHAR_INFO {
|
||||||
union {
|
union {
|
||||||
WCHAR UnicodeChar;
|
WCHAR UnicodeChar;
|
||||||
CHAR AsciiChar;
|
CHAR AsciiChar;
|
||||||
} Char;
|
} Char;
|
||||||
WORD Attributes;
|
WORD Attributes;
|
||||||
} CHAR_INFO,*PCHAR_INFO;
|
} CHAR_INFO,*PCHAR_INFO;
|
||||||
typedef struct _SMALL_RECT {
|
typedef struct _SMALL_RECT {
|
||||||
SHORT Left;
|
SHORT Left;
|
||||||
SHORT Top;
|
SHORT Top;
|
||||||
SHORT Right;
|
SHORT Right;
|
||||||
SHORT Bottom;
|
SHORT Bottom;
|
||||||
} SMALL_RECT,*PSMALL_RECT;
|
} SMALL_RECT,*PSMALL_RECT;
|
||||||
typedef struct _CONSOLE_CURSOR_INFO {
|
typedef struct _CONSOLE_CURSOR_INFO {
|
||||||
DWORD dwSize;
|
DWORD dwSize;
|
||||||
BOOL bVisible;
|
BOOL bVisible;
|
||||||
} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
|
} CONSOLE_CURSOR_INFO,*PCONSOLE_CURSOR_INFO;
|
||||||
typedef struct _COORD {
|
typedef struct _COORD {
|
||||||
SHORT X;
|
SHORT X;
|
||||||
SHORT Y;
|
SHORT Y;
|
||||||
} COORD, *PCOORD;
|
} COORD, *PCOORD;
|
||||||
typedef struct _CONSOLE_SELECTION_INFO {
|
typedef struct _CONSOLE_SELECTION_INFO {
|
||||||
DWORD dwFlags;
|
DWORD dwFlags;
|
||||||
COORD dwSelectionAnchor;
|
COORD dwSelectionAnchor;
|
||||||
SMALL_RECT srSelection;
|
SMALL_RECT srSelection;
|
||||||
} CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO;
|
} CONSOLE_SELECTION_INFO, *PCONSOLE_SELECTION_INFO;
|
||||||
typedef struct _CONSOLE_FONT_INFO {
|
typedef struct _CONSOLE_FONT_INFO {
|
||||||
DWORD nFont;
|
DWORD nFont;
|
||||||
COORD dwFontSize;
|
COORD dwFontSize;
|
||||||
} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
|
} CONSOLE_FONT_INFO, *PCONSOLE_FONT_INFO;
|
||||||
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
|
typedef struct _CONSOLE_SCREEN_BUFFER_INFO {
|
||||||
COORD dwSize;
|
COORD dwSize;
|
||||||
COORD dwCursorPosition;
|
COORD dwCursorPosition;
|
||||||
WORD wAttributes;
|
WORD wAttributes;
|
||||||
SMALL_RECT srWindow;
|
SMALL_RECT srWindow;
|
||||||
COORD dwMaximumWindowSize;
|
COORD dwMaximumWindowSize;
|
||||||
} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
|
} CONSOLE_SCREEN_BUFFER_INFO,*PCONSOLE_SCREEN_BUFFER_INFO;
|
||||||
typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(_In_ DWORD);
|
typedef BOOL(CALLBACK *PHANDLER_ROUTINE)(_In_ DWORD);
|
||||||
typedef struct _KEY_EVENT_RECORD {
|
typedef struct _KEY_EVENT_RECORD {
|
||||||
BOOL bKeyDown;
|
BOOL bKeyDown;
|
||||||
WORD wRepeatCount;
|
WORD wRepeatCount;
|
||||||
WORD wVirtualKeyCode;
|
WORD wVirtualKeyCode;
|
||||||
WORD wVirtualScanCode;
|
WORD wVirtualScanCode;
|
||||||
union {
|
union {
|
||||||
WCHAR UnicodeChar;
|
WCHAR UnicodeChar;
|
||||||
CHAR AsciiChar;
|
CHAR AsciiChar;
|
||||||
} uChar;
|
} uChar;
|
||||||
DWORD dwControlKeyState;
|
DWORD dwControlKeyState;
|
||||||
}
|
}
|
||||||
#ifdef __GNUC__
|
#ifdef __GNUC__
|
||||||
/* gcc's alignment is not what win32 expects */
|
/* gcc's alignment is not what win32 expects */
|
||||||
|
@ -156,29 +202,26 @@ typedef struct _KEY_EVENT_RECORD {
|
||||||
#endif
|
#endif
|
||||||
KEY_EVENT_RECORD;
|
KEY_EVENT_RECORD;
|
||||||
typedef struct _MOUSE_EVENT_RECORD {
|
typedef struct _MOUSE_EVENT_RECORD {
|
||||||
COORD dwMousePosition;
|
COORD dwMousePosition;
|
||||||
DWORD dwButtonState;
|
DWORD dwButtonState;
|
||||||
DWORD dwControlKeyState;
|
DWORD dwControlKeyState;
|
||||||
DWORD dwEventFlags;
|
DWORD dwEventFlags;
|
||||||
} MOUSE_EVENT_RECORD;
|
} MOUSE_EVENT_RECORD;
|
||||||
typedef struct _WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD;
|
typedef struct _WINDOW_BUFFER_SIZE_RECORD { COORD dwSize; } WINDOW_BUFFER_SIZE_RECORD;
|
||||||
typedef struct _MENU_EVENT_RECORD { UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
|
typedef struct _MENU_EVENT_RECORD { UINT dwCommandId; } MENU_EVENT_RECORD,*PMENU_EVENT_RECORD;
|
||||||
typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD;
|
typedef struct _FOCUS_EVENT_RECORD { BOOL bSetFocus; } FOCUS_EVENT_RECORD;
|
||||||
typedef struct _INPUT_RECORD {
|
typedef struct _INPUT_RECORD {
|
||||||
WORD EventType;
|
WORD EventType;
|
||||||
union {
|
union {
|
||||||
KEY_EVENT_RECORD KeyEvent;
|
KEY_EVENT_RECORD KeyEvent;
|
||||||
MOUSE_EVENT_RECORD MouseEvent;
|
MOUSE_EVENT_RECORD MouseEvent;
|
||||||
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
WINDOW_BUFFER_SIZE_RECORD WindowBufferSizeEvent;
|
||||||
MENU_EVENT_RECORD MenuEvent;
|
MENU_EVENT_RECORD MenuEvent;
|
||||||
FOCUS_EVENT_RECORD FocusEvent;
|
FOCUS_EVENT_RECORD FocusEvent;
|
||||||
} Event;
|
} Event;
|
||||||
} INPUT_RECORD,*PINPUT_RECORD;
|
} INPUT_RECORD,*PINPUT_RECORD;
|
||||||
|
|
||||||
#if (_WIN32_WINNT >= 0x0600)
|
#if (_WIN32_WINNT >= 0x0600)
|
||||||
#define HISTORY_NO_DUP_FLAG 0x1
|
|
||||||
#define CONSOLE_OVERSTRIKE 0x1
|
|
||||||
|
|
||||||
typedef struct _CONSOLE_HISTORY_INFO {
|
typedef struct _CONSOLE_HISTORY_INFO {
|
||||||
UINT cbSize;
|
UINT cbSize;
|
||||||
UINT HistoryBufferSize;
|
UINT HistoryBufferSize;
|
||||||
|
@ -212,7 +255,6 @@ typedef struct _CONSOLE_FONT_INFOEX {
|
||||||
BOOL WINAPI AllocConsole(VOID);
|
BOOL WINAPI AllocConsole(VOID);
|
||||||
|
|
||||||
#if (_WIN32_WINNT >= 0x0501)
|
#if (_WIN32_WINNT >= 0x0501)
|
||||||
#define ATTACH_PARENT_PROCESS (DWORD)-1
|
|
||||||
BOOL WINAPI AttachConsole(_In_ DWORD);
|
BOOL WINAPI AttachConsole(_In_ DWORD);
|
||||||
|
|
||||||
BOOL WINAPI AddConsoleAliasA(_In_ LPCSTR, _In_ LPCSTR, _In_ LPCSTR);
|
BOOL WINAPI AddConsoleAliasA(_In_ LPCSTR, _In_ LPCSTR, _In_ LPCSTR);
|
||||||
|
@ -294,7 +336,7 @@ GetConsoleTitleW(
|
||||||
|
|
||||||
#if (_WIN32_WINNT >= 0x0500)
|
#if (_WIN32_WINNT >= 0x0500)
|
||||||
HWND WINAPI GetConsoleWindow(VOID);
|
HWND WINAPI GetConsoleWindow(VOID);
|
||||||
WINBASEAPI BOOL APIENTRY GetConsoleDisplayMode(_Out_ LPDWORD lpModeFlags);
|
BOOL APIENTRY GetConsoleDisplayMode(_Out_ LPDWORD lpModeFlags);
|
||||||
BOOL APIENTRY SetConsoleDisplayMode(_In_ HANDLE hConsoleOutput, _In_ DWORD dwFlags, _Out_opt_ PCOORD lpNewScreenBufferDimensions);
|
BOOL APIENTRY SetConsoleDisplayMode(_In_ HANDLE hConsoleOutput, _In_ DWORD dwFlags, _Out_opt_ PCOORD lpNewScreenBufferDimensions);
|
||||||
#endif
|
#endif
|
||||||
COORD WINAPI GetLargestConsoleWindowSize(_In_ HANDLE);
|
COORD WINAPI GetLargestConsoleWindowSize(_In_ HANDLE);
|
||||||
|
@ -438,10 +480,6 @@ WriteConsoleOutputCharacterW(
|
||||||
_In_ COORD dwWriteCoord,
|
_In_ COORD dwWriteCoord,
|
||||||
_Out_ LPDWORD lpNumberOfCharsWritten);
|
_Out_ LPDWORD lpNumberOfCharsWritten);
|
||||||
|
|
||||||
#define CONSOLE_FULLSCREEN 1
|
|
||||||
#define CONSOLE_FULLSCREEN_HARDWARE 2
|
|
||||||
#define CONSOLE_FULLSCREEN_MODE 1
|
|
||||||
#define CONSOLE_WINDOWED_MODE 2
|
|
||||||
|
|
||||||
#ifdef UNICODE
|
#ifdef UNICODE
|
||||||
#define AddConsoleAlias AddConsoleAliasW
|
#define AddConsoleAlias AddConsoleAliasW
|
||||||
|
|
|
@ -66,11 +66,11 @@ typedef enum _CONSRV_API_NUMBER
|
||||||
// ConsolepShowCursor,
|
// ConsolepShowCursor,
|
||||||
// ConsolepMenuControl,
|
// ConsolepMenuControl,
|
||||||
// ConsolepSetPalette,
|
// ConsolepSetPalette,
|
||||||
// ConsolepSetDisplayMode,
|
ConsolepSetDisplayMode,
|
||||||
// ConsolepRegisterVDM,
|
// ConsolepRegisterVDM,
|
||||||
ConsolepGetHardwareState,
|
ConsolepGetHardwareState,
|
||||||
ConsolepSetHardwareState,
|
ConsolepSetHardwareState,
|
||||||
// ConsolepGetDisplayMode,
|
ConsolepGetDisplayMode,
|
||||||
ConsolepAddAlias,
|
ConsolepAddAlias,
|
||||||
ConsolepGetAlias,
|
ConsolepGetAlias,
|
||||||
ConsolepGetAliasesLength,
|
ConsolepGetAliasesLength,
|
||||||
|
@ -236,6 +236,34 @@ typedef struct
|
||||||
DWORD ConsoleMode;
|
DWORD ConsoleMode;
|
||||||
} CONSOLE_GETSETCONSOLEMODE, *PCONSOLE_GETSETCONSOLEMODE;
|
} CONSOLE_GETSETCONSOLEMODE, *PCONSOLE_GETSETCONSOLEMODE;
|
||||||
|
|
||||||
|
|
||||||
|
#define CONSOLE_WINDOWED 0 /* Internal console hardware state */
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
// HANDLE OutputHandle;
|
||||||
|
DWORD DisplayMode;
|
||||||
|
} CONSOLE_GETDISPLAYMODE, *PCONSOLE_GETDISPLAYMODE;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
HANDLE OutputHandle;
|
||||||
|
DWORD DisplayMode;
|
||||||
|
COORD NewSBDim;
|
||||||
|
} CONSOLE_SETDISPLAYMODE, *PCONSOLE_SETDISPLAYMODE;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Console hardware states.
|
||||||
|
*/
|
||||||
|
#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
|
||||||
|
#define CONSOLE_HARDWARE_STATE_DIRECT 1
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
HANDLE OutputHandle;
|
||||||
|
DWORD State;
|
||||||
|
} CONSOLE_GETSETHWSTATE, *PCONSOLE_GETSETHWSTATE;
|
||||||
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
HANDLE OutputHandle; /* Handle to newly created screen buffer */
|
HANDLE OutputHandle; /* Handle to newly created screen buffer */
|
||||||
|
@ -425,18 +453,6 @@ typedef struct
|
||||||
} CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
|
} CONSOLE_OPENCONSOLE, *PCONSOLE_OPENCONSOLE;
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Console hardware states.
|
|
||||||
*/
|
|
||||||
#define CONSOLE_HARDWARE_STATE_GDI_MANAGED 0
|
|
||||||
#define CONSOLE_HARDWARE_STATE_DIRECT 1
|
|
||||||
|
|
||||||
typedef struct
|
|
||||||
{
|
|
||||||
HANDLE OutputHandle;
|
|
||||||
DWORD State;
|
|
||||||
} CONSOLE_GETSETHWSTATE, *PCONSOLE_GETSETHWSTATE;
|
|
||||||
|
|
||||||
typedef struct
|
typedef struct
|
||||||
{
|
{
|
||||||
HWND WindowHandle;
|
HWND WindowHandle;
|
||||||
|
@ -585,6 +601,8 @@ typedef struct _CONSOLE_API_MESSAGE
|
||||||
|
|
||||||
/* Console mode */
|
/* Console mode */
|
||||||
CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
|
CONSOLE_GETSETCONSOLEMODE ConsoleModeRequest;
|
||||||
|
CONSOLE_GETDISPLAYMODE GetDisplayModeRequest;
|
||||||
|
CONSOLE_SETDISPLAYMODE SetDisplayModeRequest;
|
||||||
CONSOLE_GETSETHWSTATE HardwareStateRequest;
|
CONSOLE_GETSETHWSTATE HardwareStateRequest;
|
||||||
|
|
||||||
/* Console window */
|
/* Console window */
|
||||||
|
|
|
@ -54,6 +54,7 @@ typedef struct _CONSOLE_SCREEN_BUFFER
|
||||||
WORD ScreenDefaultAttrib; /* Default screen char attribute */
|
WORD ScreenDefaultAttrib; /* Default screen char attribute */
|
||||||
WORD PopupDefaultAttrib; /* Default popup char attribute */
|
WORD PopupDefaultAttrib; /* Default popup char attribute */
|
||||||
USHORT Mode;
|
USHORT Mode;
|
||||||
|
ULONG DisplayMode;
|
||||||
} CONSOLE_SCREEN_BUFFER, *PCONSOLE_SCREEN_BUFFER;
|
} CONSOLE_SCREEN_BUFFER, *PCONSOLE_SCREEN_BUFFER;
|
||||||
|
|
||||||
typedef struct _CONSOLE_INPUT_BUFFER
|
typedef struct _CONSOLE_INPUT_BUFFER
|
||||||
|
@ -198,8 +199,7 @@ typedef struct _CONSOLE
|
||||||
HANDLE UnpauseEvent;
|
HANDLE UnpauseEvent;
|
||||||
LIST_ENTRY WriteWaitQueue; /* List head for the queue of write wait blocks */
|
LIST_ENTRY WriteWaitQueue; /* List head for the queue of write wait blocks */
|
||||||
|
|
||||||
DWORD HardwareState; /* _GDI_MANAGED, _DIRECT */
|
ULONG HardwareState; /* _GDI_MANAGED, _DIRECT */
|
||||||
/* BOOLEAN */ ULONG FullScreen; // Give the type of console: GUI (windowed) or TUI (fullscreen)
|
|
||||||
|
|
||||||
/**************************** Aliases and Histories ***************************/
|
/**************************** Aliases and Histories ***************************/
|
||||||
struct _ALIAS_HEADER *Aliases;
|
struct _ALIAS_HEADER *Aliases;
|
||||||
|
@ -217,16 +217,6 @@ typedef struct _CONSOLE
|
||||||
|
|
||||||
} CONSOLE, *PCONSOLE;
|
} CONSOLE, *PCONSOLE;
|
||||||
|
|
||||||
/* CONSOLE_SELECTION_INFO dwFlags values */
|
|
||||||
#define CONSOLE_NO_SELECTION 0x0
|
|
||||||
#define CONSOLE_SELECTION_IN_PROGRESS 0x1
|
|
||||||
#define CONSOLE_SELECTION_NOT_EMPTY 0x2
|
|
||||||
#define CONSOLE_MOUSE_SELECTION 0x4
|
|
||||||
#define CONSOLE_MOUSE_DOWN 0x8
|
|
||||||
|
|
||||||
/* HistoryFlags values */
|
|
||||||
#define HISTORY_NO_DUP_FLAG 0x1
|
|
||||||
|
|
||||||
/* PauseFlags values (internal only) */
|
/* PauseFlags values (internal only) */
|
||||||
#define PAUSED_FROM_KEYBOARD 0x1
|
#define PAUSED_FROM_KEYBOARD 0x1
|
||||||
#define PAUSED_FROM_SCROLLBAR 0x2
|
#define PAUSED_FROM_SCROLLBAR 0x2
|
||||||
|
@ -274,6 +264,7 @@ NTSTATUS FASTCALL ConSrvCreateScreenBuffer(IN OUT PCONSOLE Console,
|
||||||
IN COORD ScreenBufferSize,
|
IN COORD ScreenBufferSize,
|
||||||
IN USHORT ScreenAttrib,
|
IN USHORT ScreenAttrib,
|
||||||
IN USHORT PopupAttrib,
|
IN USHORT PopupAttrib,
|
||||||
|
IN ULONG DisplayMode,
|
||||||
IN BOOLEAN IsCursorVisible,
|
IN BOOLEAN IsCursorVisible,
|
||||||
IN ULONG CursorSize);
|
IN ULONG CursorSize);
|
||||||
VOID WINAPI ConioDeleteScreenBuffer(PCONSOLE_SCREEN_BUFFER Buffer);
|
VOID WINAPI ConioDeleteScreenBuffer(PCONSOLE_SCREEN_BUFFER Buffer);
|
||||||
|
|
|
@ -65,6 +65,7 @@ ConSrvCreateScreenBuffer(IN OUT PCONSOLE Console,
|
||||||
IN COORD ScreenBufferSize,
|
IN COORD ScreenBufferSize,
|
||||||
IN USHORT ScreenAttrib,
|
IN USHORT ScreenAttrib,
|
||||||
IN USHORT PopupAttrib,
|
IN USHORT PopupAttrib,
|
||||||
|
IN ULONG DisplayMode,
|
||||||
IN BOOLEAN IsCursorVisible,
|
IN BOOLEAN IsCursorVisible,
|
||||||
IN ULONG CursorSize)
|
IN ULONG CursorSize)
|
||||||
{
|
{
|
||||||
|
@ -103,9 +104,11 @@ ConSrvCreateScreenBuffer(IN OUT PCONSOLE Console,
|
||||||
{
|
{
|
||||||
ClearLineBuffer(*Buffer);
|
ClearLineBuffer(*Buffer);
|
||||||
}
|
}
|
||||||
(*Buffer)->Mode = ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT;
|
|
||||||
(*Buffer)->CursorPosition = (COORD){0, 0};
|
(*Buffer)->CursorPosition = (COORD){0, 0};
|
||||||
|
|
||||||
|
(*Buffer)->Mode = ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT;
|
||||||
|
(*Buffer)->DisplayMode = DisplayMode;
|
||||||
|
|
||||||
InsertHeadList(&Console->BufferList, &(*Buffer)->ListEntry);
|
InsertHeadList(&Console->BufferList, &(*Buffer)->ListEntry);
|
||||||
return STATUS_SUCCESS;
|
return STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -1273,6 +1276,7 @@ CSR_API(SrvCreateConsoleScreenBuffer)
|
||||||
COORD ScreenBufferSize = (COORD){80, 25};
|
COORD ScreenBufferSize = (COORD){80, 25};
|
||||||
USHORT ScreenAttrib = DEFAULT_SCREEN_ATTRIB;
|
USHORT ScreenAttrib = DEFAULT_SCREEN_ATTRIB;
|
||||||
USHORT PopupAttrib = DEFAULT_POPUP_ATTRIB;
|
USHORT PopupAttrib = DEFAULT_POPUP_ATTRIB;
|
||||||
|
ULONG DisplayMode = CONSOLE_WINDOWED_MODE;
|
||||||
BOOLEAN IsCursorVisible = TRUE;
|
BOOLEAN IsCursorVisible = TRUE;
|
||||||
ULONG CursorSize = CSR_DEFAULT_CURSOR_SIZE;
|
ULONG CursorSize = CSR_DEFAULT_CURSOR_SIZE;
|
||||||
|
|
||||||
|
@ -1314,6 +1318,7 @@ CSR_API(SrvCreateConsoleScreenBuffer)
|
||||||
{
|
{
|
||||||
ScreenAttrib = Console->ActiveBuffer->ScreenDefaultAttrib;
|
ScreenAttrib = Console->ActiveBuffer->ScreenDefaultAttrib;
|
||||||
PopupAttrib = Console->ActiveBuffer->PopupDefaultAttrib;
|
PopupAttrib = Console->ActiveBuffer->PopupDefaultAttrib;
|
||||||
|
DisplayMode = Console->ActiveBuffer->DisplayMode;
|
||||||
|
|
||||||
IsCursorVisible = Console->ActiveBuffer->CursorInfo.bVisible;
|
IsCursorVisible = Console->ActiveBuffer->CursorInfo.bVisible;
|
||||||
CursorSize = Console->ActiveBuffer->CursorInfo.dwSize;
|
CursorSize = Console->ActiveBuffer->CursorInfo.dwSize;
|
||||||
|
@ -1325,6 +1330,7 @@ CSR_API(SrvCreateConsoleScreenBuffer)
|
||||||
ScreenBufferSize,
|
ScreenBufferSize,
|
||||||
ScreenAttrib,
|
ScreenAttrib,
|
||||||
PopupAttrib,
|
PopupAttrib,
|
||||||
|
DisplayMode,
|
||||||
IsCursorVisible,
|
IsCursorVisible,
|
||||||
CursorSize);
|
CursorSize);
|
||||||
if (NT_SUCCESS(Status))
|
if (NT_SUCCESS(Status))
|
||||||
|
|
|
@ -391,6 +391,7 @@ ConSrvInitConsole(OUT PCONSOLE* NewConsole,
|
||||||
/*
|
/*
|
||||||
if (ConsoleStartInfo->dwStartupFlags & STARTF_RUNFULLSCREEN)
|
if (ConsoleStartInfo->dwStartupFlags & STARTF_RUNFULLSCREEN)
|
||||||
{
|
{
|
||||||
|
ConsoleInfo.FullScreen = TRUE;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
@ -422,9 +423,8 @@ ConSrvInitConsole(OUT PCONSOLE* NewConsole,
|
||||||
return STATUS_UNSUCCESSFUL;
|
return STATUS_UNSUCCESSFUL;
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Use the values from ConsoleInfo.
|
Console->InputBuffer.Mode = ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT |
|
||||||
Console->InputBuffer.Mode = ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT |
|
ENABLE_ECHO_INPUT | ENABLE_MOUSE_INPUT;
|
||||||
ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT;
|
|
||||||
Console->QuickEdit = ConsoleInfo.QuickEdit;
|
Console->QuickEdit = ConsoleInfo.QuickEdit;
|
||||||
Console->InsertMode = ConsoleInfo.InsertMode;
|
Console->InsertMode = ConsoleInfo.InsertMode;
|
||||||
InitializeListHead(&Console->InputBuffer.ReadWaitQueue);
|
InitializeListHead(&Console->InputBuffer.ReadWaitQueue);
|
||||||
|
@ -440,6 +440,8 @@ ConSrvInitConsole(OUT PCONSOLE* NewConsole,
|
||||||
ConsoleInfo.ScreenBufferSize,
|
ConsoleInfo.ScreenBufferSize,
|
||||||
ConsoleInfo.ScreenAttrib,
|
ConsoleInfo.ScreenAttrib,
|
||||||
ConsoleInfo.PopupAttrib,
|
ConsoleInfo.PopupAttrib,
|
||||||
|
(ConsoleInfo.FullScreen ? CONSOLE_FULLSCREEN_MODE
|
||||||
|
: CONSOLE_WINDOWED_MODE),
|
||||||
TRUE,
|
TRUE,
|
||||||
ConsoleInfo.CursorSize);
|
ConsoleInfo.CursorSize);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
|
@ -452,7 +454,6 @@ ConSrvInitConsole(OUT PCONSOLE* NewConsole,
|
||||||
}
|
}
|
||||||
/* Make the new screen buffer active */
|
/* Make the new screen buffer active */
|
||||||
Console->ActiveBuffer = NewBuffer;
|
Console->ActiveBuffer = NewBuffer;
|
||||||
Console->FullScreen = ConsoleInfo.FullScreen;
|
|
||||||
InitializeListHead(&Console->WriteWaitQueue);
|
InitializeListHead(&Console->WriteWaitQueue);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1010,19 +1011,20 @@ CSR_API(SrvFreeConsole)
|
||||||
|
|
||||||
CSR_API(SrvSetConsoleMode)
|
CSR_API(SrvSetConsoleMode)
|
||||||
{
|
{
|
||||||
#define CONSOLE_INPUT_MODE_VALID ( ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT | \
|
#define CONSOLE_VALID_CONTROL_MODES ( ENABLE_EXTENDED_FLAGS | ENABLE_INSERT_MODE | ENABLE_QUICK_EDIT_MODE )
|
||||||
ENABLE_ECHO_INPUT | ENABLE_WINDOW_INPUT | \
|
#define CONSOLE_VALID_INPUT_MODES ( ENABLE_PROCESSED_INPUT | ENABLE_LINE_INPUT | \
|
||||||
ENABLE_MOUSE_INPUT | \
|
ENABLE_ECHO_INPUT | ENABLE_WINDOW_INPUT | \
|
||||||
ENABLE_INSERT_MODE | ENABLE_QUICK_EDIT_MODE | ENABLE_EXTENDED_FLAGS )
|
ENABLE_MOUSE_INPUT )
|
||||||
#define CONSOLE_OUTPUT_MODE_VALID ( ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT )
|
#define CONSOLE_VALID_OUTPUT_MODES ( ENABLE_PROCESSED_OUTPUT | ENABLE_WRAP_AT_EOL_OUTPUT )
|
||||||
|
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
PCONSOLE_GETSETCONSOLEMODE ConsoleModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleModeRequest;
|
PCONSOLE_GETSETCONSOLEMODE ConsoleModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.ConsoleModeRequest;
|
||||||
Object_t* Object = NULL;
|
DWORD ConsoleMode = ConsoleModeRequest->ConsoleMode;
|
||||||
|
Object_t* Object = NULL;
|
||||||
|
|
||||||
Status = ConSrvGetObject(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
Status = ConSrvGetObject(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
ConsoleModeRequest->ConsoleHandle,
|
ConsoleModeRequest->ConsoleHandle,
|
||||||
&Object, NULL, GENERIC_WRITE, TRUE, 0);
|
&Object, NULL, GENERIC_WRITE, TRUE, 0);
|
||||||
if (!NT_SUCCESS(Status)) return Status;
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
|
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
|
@ -1030,18 +1032,62 @@ CSR_API(SrvSetConsoleMode)
|
||||||
if (CONIO_INPUT_BUFFER_MAGIC == Object->Type)
|
if (CONIO_INPUT_BUFFER_MAGIC == Object->Type)
|
||||||
{
|
{
|
||||||
PCONSOLE_INPUT_BUFFER InputBuffer = (PCONSOLE_INPUT_BUFFER)Object;
|
PCONSOLE_INPUT_BUFFER InputBuffer = (PCONSOLE_INPUT_BUFFER)Object;
|
||||||
InputBuffer->Mode = ConsoleModeRequest->ConsoleMode & CONSOLE_INPUT_MODE_VALID;
|
PCONSOLE Console = InputBuffer->Header.Console;
|
||||||
|
|
||||||
|
DPRINT("SetConsoleMode(Input, %d)\n", ConsoleMode);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 1. Only the presence of valid mode flags is allowed.
|
||||||
|
*/
|
||||||
|
if (ConsoleMode & ~(CONSOLE_VALID_INPUT_MODES | CONSOLE_VALID_CONTROL_MODES))
|
||||||
|
{
|
||||||
|
Status = STATUS_INVALID_PARAMETER;
|
||||||
|
goto Quit;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 2. If we use control mode flags without ENABLE_EXTENDED_FLAGS,
|
||||||
|
* then consider the flags invalid.
|
||||||
|
*
|
||||||
|
if ( (ConsoleMode & CONSOLE_VALID_CONTROL_MODES) &&
|
||||||
|
(ConsoleMode & ENABLE_EXTENDED_FLAGS) == 0 )
|
||||||
|
{
|
||||||
|
Status = STATUS_INVALID_PARAMETER;
|
||||||
|
goto Quit;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 3. Now we can continue.
|
||||||
|
*/
|
||||||
|
if (ConsoleMode & CONSOLE_VALID_CONTROL_MODES)
|
||||||
|
{
|
||||||
|
Console->QuickEdit = !!(ConsoleMode & ENABLE_QUICK_EDIT_MODE);
|
||||||
|
Console->InsertMode = !!(ConsoleMode & ENABLE_INSERT_MODE);
|
||||||
|
}
|
||||||
|
InputBuffer->Mode = (ConsoleMode & CONSOLE_VALID_INPUT_MODES);
|
||||||
}
|
}
|
||||||
else if (CONIO_SCREEN_BUFFER_MAGIC == Object->Type)
|
else if (CONIO_SCREEN_BUFFER_MAGIC == Object->Type)
|
||||||
{
|
{
|
||||||
PCONSOLE_SCREEN_BUFFER Buffer = (PCONSOLE_SCREEN_BUFFER)Object;
|
PCONSOLE_SCREEN_BUFFER Buffer = (PCONSOLE_SCREEN_BUFFER)Object;
|
||||||
Buffer->Mode = ConsoleModeRequest->ConsoleMode & CONSOLE_OUTPUT_MODE_VALID;
|
|
||||||
|
DPRINT("SetConsoleMode(Output, %d)\n", ConsoleMode);
|
||||||
|
|
||||||
|
if (ConsoleMode & ~CONSOLE_VALID_OUTPUT_MODES)
|
||||||
|
{
|
||||||
|
Status = STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Buffer->Mode = (ConsoleMode & CONSOLE_VALID_OUTPUT_MODES);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
Status = STATUS_INVALID_HANDLE;
|
Status = STATUS_INVALID_HANDLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Quit:
|
||||||
ConSrvReleaseObject(Object, TRUE);
|
ConSrvReleaseObject(Object, TRUE);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
@ -1053,8 +1099,8 @@ CSR_API(SrvGetConsoleMode)
|
||||||
Object_t* Object = NULL;
|
Object_t* Object = NULL;
|
||||||
|
|
||||||
Status = ConSrvGetObject(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
Status = ConSrvGetObject(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
ConsoleModeRequest->ConsoleHandle,
|
ConsoleModeRequest->ConsoleHandle,
|
||||||
&Object, NULL, GENERIC_READ, TRUE, 0);
|
&Object, NULL, GENERIC_READ, TRUE, 0);
|
||||||
if (!NT_SUCCESS(Status)) return Status;
|
if (!NT_SUCCESS(Status)) return Status;
|
||||||
|
|
||||||
Status = STATUS_SUCCESS;
|
Status = STATUS_SUCCESS;
|
||||||
|
@ -1062,7 +1108,19 @@ CSR_API(SrvGetConsoleMode)
|
||||||
if (CONIO_INPUT_BUFFER_MAGIC == Object->Type)
|
if (CONIO_INPUT_BUFFER_MAGIC == Object->Type)
|
||||||
{
|
{
|
||||||
PCONSOLE_INPUT_BUFFER InputBuffer = (PCONSOLE_INPUT_BUFFER)Object;
|
PCONSOLE_INPUT_BUFFER InputBuffer = (PCONSOLE_INPUT_BUFFER)Object;
|
||||||
ConsoleModeRequest->ConsoleMode = InputBuffer->Mode;
|
PCONSOLE Console = InputBuffer->Header.Console;
|
||||||
|
DWORD ConsoleMode = InputBuffer->Mode;
|
||||||
|
|
||||||
|
if (Console->QuickEdit || Console->InsertMode)
|
||||||
|
{
|
||||||
|
// Windows does this, even if it's not documented on MSDN
|
||||||
|
ConsoleMode |= ENABLE_EXTENDED_FLAGS;
|
||||||
|
|
||||||
|
if (Console->QuickEdit ) ConsoleMode |= ENABLE_QUICK_EDIT_MODE;
|
||||||
|
if (Console->InsertMode) ConsoleMode |= ENABLE_INSERT_MODE;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConsoleModeRequest->ConsoleMode = ConsoleMode;
|
||||||
}
|
}
|
||||||
else if (CONIO_SCREEN_BUFFER_MAGIC == Object->Type)
|
else if (CONIO_SCREEN_BUFFER_MAGIC == Object->Type)
|
||||||
{
|
{
|
||||||
|
@ -1181,7 +1239,7 @@ CSR_API(SrvGetConsoleTitle)
|
||||||
* with NT's, but values are not.
|
* with NT's, but values are not.
|
||||||
*/
|
*/
|
||||||
static NTSTATUS FASTCALL
|
static NTSTATUS FASTCALL
|
||||||
SetConsoleHardwareState(PCONSOLE Console, DWORD ConsoleHwState)
|
SetConsoleHardwareState(PCONSOLE Console, ULONG ConsoleHwState)
|
||||||
{
|
{
|
||||||
DPRINT1("Console Hardware State: %d\n", ConsoleHwState);
|
DPRINT1("Console Hardware State: %d\n", ConsoleHwState);
|
||||||
|
|
||||||
|
@ -1223,7 +1281,6 @@ CSR_API(SrvGetConsoleHardwareState)
|
||||||
HardwareStateRequest->State = Console->HardwareState;
|
HardwareStateRequest->State = Console->HardwareState;
|
||||||
|
|
||||||
ConSrvReleaseScreenBuffer(Buff, TRUE);
|
ConSrvReleaseScreenBuffer(Buff, TRUE);
|
||||||
|
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1237,7 +1294,7 @@ CSR_API(SrvSetConsoleHardwareState)
|
||||||
Status = ConSrvGetScreenBuffer(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
Status = ConSrvGetScreenBuffer(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
HardwareStateRequest->OutputHandle,
|
HardwareStateRequest->OutputHandle,
|
||||||
&Buff,
|
&Buff,
|
||||||
GENERIC_READ,
|
GENERIC_WRITE,
|
||||||
TRUE);
|
TRUE);
|
||||||
if (!NT_SUCCESS(Status))
|
if (!NT_SUCCESS(Status))
|
||||||
{
|
{
|
||||||
|
@ -1250,7 +1307,67 @@ CSR_API(SrvSetConsoleHardwareState)
|
||||||
Status = SetConsoleHardwareState(Console, HardwareStateRequest->State);
|
Status = SetConsoleHardwareState(Console, HardwareStateRequest->State);
|
||||||
|
|
||||||
ConSrvReleaseScreenBuffer(Buff, TRUE);
|
ConSrvReleaseScreenBuffer(Buff, TRUE);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
CSR_API(SrvGetConsoleDisplayMode)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
PCONSOLE_GETDISPLAYMODE GetDisplayModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.GetDisplayModeRequest;
|
||||||
|
PCONSOLE Console;
|
||||||
|
ULONG DisplayMode = 0;
|
||||||
|
|
||||||
|
Status = ConSrvGetConsole(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
|
&Console, TRUE);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("Failed to get console handle in SrvGetConsoleDisplayMode\n");
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Console->ActiveBuffer->DisplayMode & CONSOLE_FULLSCREEN_MODE)
|
||||||
|
DisplayMode |= CONSOLE_FULLSCREEN_HARDWARE; // CONSOLE_FULLSCREEN
|
||||||
|
else if (Console->ActiveBuffer->DisplayMode & CONSOLE_WINDOWED_MODE)
|
||||||
|
DisplayMode |= CONSOLE_WINDOWED;
|
||||||
|
|
||||||
|
GetDisplayModeRequest->DisplayMode = DisplayMode;
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
|
||||||
|
ConSrvReleaseConsole(Console, TRUE);
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
CSR_API(SrvSetConsoleDisplayMode)
|
||||||
|
{
|
||||||
|
NTSTATUS Status;
|
||||||
|
PCONSOLE_SETDISPLAYMODE SetDisplayModeRequest = &((PCONSOLE_API_MESSAGE)ApiMessage)->Data.SetDisplayModeRequest;
|
||||||
|
PCONSOLE_SCREEN_BUFFER Buff;
|
||||||
|
|
||||||
|
Status = ConSrvGetScreenBuffer(ConsoleGetPerProcessData(CsrGetClientThread()->Process),
|
||||||
|
SetDisplayModeRequest->OutputHandle,
|
||||||
|
&Buff,
|
||||||
|
GENERIC_WRITE,
|
||||||
|
TRUE);
|
||||||
|
if (!NT_SUCCESS(Status))
|
||||||
|
{
|
||||||
|
DPRINT1("Failed to get console handle in SrvSetConsoleDisplayMode\n");
|
||||||
|
return Status;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (SetDisplayModeRequest->DisplayMode & ~(CONSOLE_FULLSCREEN_MODE | CONSOLE_WINDOWED_MODE))
|
||||||
|
{
|
||||||
|
Status = STATUS_INVALID_PARAMETER;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Buff->DisplayMode = SetDisplayModeRequest->DisplayMode;
|
||||||
|
// TODO: Change the display mode
|
||||||
|
SetDisplayModeRequest->NewSBDim = Buff->ScreenBufferSize;
|
||||||
|
|
||||||
|
Status = STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
ConSrvReleaseScreenBuffer(Buff, TRUE);
|
||||||
return Status;
|
return Status;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -151,6 +151,8 @@ CSR_API(SrvSetConsoleTitle);
|
||||||
CSR_API(SrvGetConsoleTitle);
|
CSR_API(SrvGetConsoleTitle);
|
||||||
CSR_API(SrvGetConsoleHardwareState);
|
CSR_API(SrvGetConsoleHardwareState);
|
||||||
CSR_API(SrvSetConsoleHardwareState);
|
CSR_API(SrvSetConsoleHardwareState);
|
||||||
|
CSR_API(SrvGetConsoleDisplayMode);
|
||||||
|
CSR_API(SrvSetConsoleDisplayMode);
|
||||||
CSR_API(SrvGetConsoleWindow);
|
CSR_API(SrvGetConsoleWindow);
|
||||||
CSR_API(SrvSetConsoleIcon);
|
CSR_API(SrvSetConsoleIcon);
|
||||||
CSR_API(SrvGetConsoleCP);
|
CSR_API(SrvGetConsoleCP);
|
||||||
|
|
|
@ -281,7 +281,7 @@ GuiConsoleShowConsoleProperties(PGUI_CONSOLE_DATA GuiData,
|
||||||
pSharedInfo->ci.HistoryBufferSize = Console->HistoryBufferSize;
|
pSharedInfo->ci.HistoryBufferSize = Console->HistoryBufferSize;
|
||||||
pSharedInfo->ci.NumberOfHistoryBuffers = Console->NumberOfHistoryBuffers;
|
pSharedInfo->ci.NumberOfHistoryBuffers = Console->NumberOfHistoryBuffers;
|
||||||
pSharedInfo->ci.HistoryNoDup = Console->HistoryNoDup;
|
pSharedInfo->ci.HistoryNoDup = Console->HistoryNoDup;
|
||||||
pSharedInfo->ci.FullScreen = Console->FullScreen;
|
pSharedInfo->ci.FullScreen = !!(Console->ActiveBuffer->DisplayMode & CONSOLE_FULLSCREEN_MODE);
|
||||||
pSharedInfo->ci.QuickEdit = Console->QuickEdit;
|
pSharedInfo->ci.QuickEdit = Console->QuickEdit;
|
||||||
pSharedInfo->ci.InsertMode = Console->InsertMode;
|
pSharedInfo->ci.InsertMode = Console->InsertMode;
|
||||||
pSharedInfo->ci.InputBufferSize = 0;
|
pSharedInfo->ci.InputBufferSize = 0;
|
||||||
|
|
|
@ -16,6 +16,8 @@
|
||||||
#include "guisettings.h"
|
#include "guisettings.h"
|
||||||
#include "resource.h"
|
#include "resource.h"
|
||||||
|
|
||||||
|
#include <windowsx.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
|
@ -876,12 +878,12 @@ PointToCoord(PGUI_CONSOLE_DATA GuiData, LPARAM lParam)
|
||||||
static LRESULT
|
static LRESULT
|
||||||
GuiConsoleHandleMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam)
|
GuiConsoleHandleMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
LRESULT Ret = TRUE;
|
BOOL Err = FALSE;
|
||||||
PCONSOLE Console = GuiData->Console;
|
PCONSOLE Console = GuiData->Console;
|
||||||
|
|
||||||
if (!ConSrvValidateConsoleUnsafe(Console, CONSOLE_RUNNING, TRUE))
|
if (!ConSrvValidateConsoleUnsafe(Console, CONSOLE_RUNNING, TRUE))
|
||||||
{
|
{
|
||||||
Ret = FALSE;
|
Err = TRUE;
|
||||||
goto Quit;
|
goto Quit;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -943,7 +945,7 @@ GuiConsoleHandleMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Ret = FALSE;
|
Err = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -958,31 +960,37 @@ GuiConsoleHandleMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM
|
||||||
switch (msg)
|
switch (msg)
|
||||||
{
|
{
|
||||||
case WM_LBUTTONDOWN:
|
case WM_LBUTTONDOWN:
|
||||||
|
SetCapture(GuiData->hWindow);
|
||||||
dwButtonState = FROM_LEFT_1ST_BUTTON_PRESSED;
|
dwButtonState = FROM_LEFT_1ST_BUTTON_PRESSED;
|
||||||
dwEventFlags = 0;
|
dwEventFlags = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_MBUTTONDOWN:
|
case WM_MBUTTONDOWN:
|
||||||
|
SetCapture(GuiData->hWindow);
|
||||||
dwButtonState = FROM_LEFT_2ND_BUTTON_PRESSED;
|
dwButtonState = FROM_LEFT_2ND_BUTTON_PRESSED;
|
||||||
dwEventFlags = 0;
|
dwEventFlags = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_RBUTTONDOWN:
|
case WM_RBUTTONDOWN:
|
||||||
|
SetCapture(GuiData->hWindow);
|
||||||
dwButtonState = RIGHTMOST_BUTTON_PRESSED;
|
dwButtonState = RIGHTMOST_BUTTON_PRESSED;
|
||||||
dwEventFlags = 0;
|
dwEventFlags = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_LBUTTONUP:
|
case WM_LBUTTONUP:
|
||||||
|
ReleaseCapture();
|
||||||
dwButtonState = 0;
|
dwButtonState = 0;
|
||||||
dwEventFlags = 0;
|
dwEventFlags = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_MBUTTONUP:
|
case WM_MBUTTONUP:
|
||||||
|
ReleaseCapture();
|
||||||
dwButtonState = 0;
|
dwButtonState = 0;
|
||||||
dwEventFlags = 0;
|
dwEventFlags = 0;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case WM_RBUTTONUP:
|
case WM_RBUTTONUP:
|
||||||
|
ReleaseCapture();
|
||||||
dwButtonState = 0;
|
dwButtonState = 0;
|
||||||
dwEventFlags = 0;
|
dwEventFlags = 0;
|
||||||
break;
|
break;
|
||||||
|
@ -1018,11 +1026,11 @@ GuiConsoleHandleMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Ret = FALSE;
|
Err = TRUE;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Ret)
|
if (!Err)
|
||||||
{
|
{
|
||||||
if (wKeyState & MK_LBUTTON)
|
if (wKeyState & MK_LBUTTON)
|
||||||
dwButtonState |= FROM_LEFT_1ST_BUTTON_PRESSED;
|
dwButtonState |= FROM_LEFT_1ST_BUTTON_PRESSED;
|
||||||
|
@ -1060,14 +1068,18 @@ GuiConsoleHandleMouse(PGUI_CONSOLE_DATA GuiData, UINT msg, WPARAM wParam, LPARAM
|
||||||
ConioProcessInputEvent(Console, &er);
|
ConioProcessInputEvent(Console, &er);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Err = TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
LeaveCriticalSection(&Console->Lock);
|
LeaveCriticalSection(&Console->Lock);
|
||||||
|
|
||||||
Quit:
|
Quit:
|
||||||
if (!Ret)
|
if (Err)
|
||||||
Ret = DefWindowProcW(GuiData->hWindow, msg, wParam, lParam);
|
return DefWindowProcW(GuiData->hWindow, msg, wParam, lParam);
|
||||||
|
else
|
||||||
return Ret;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static VOID
|
static VOID
|
||||||
|
@ -1473,6 +1485,50 @@ GuiConsoleWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WM_NCRBUTTONDOWN:
|
||||||
|
{
|
||||||
|
DPRINT("WM_NCRBUTTONDOWN\n");
|
||||||
|
/*
|
||||||
|
* HACK: !! Because, when we deal with WM_RBUTTON* and we do not
|
||||||
|
* call after that DefWindowProc, on ReactOS, right-clicks on the
|
||||||
|
* (non-client) application title-bar does not display the system
|
||||||
|
* menu and does not trigger a WM_NCRBUTTONUP message too.
|
||||||
|
* See: http://git.reactos.org/?p=reactos.git;a=blob;f=reactos/win32ss/user/user32/windows/defwnd.c;hb=HEAD#l1103
|
||||||
|
* and line 1135 too.
|
||||||
|
*/
|
||||||
|
if (DefWindowProcW(hWnd, WM_NCHITTEST, 0, lParam) == HTCAPTION)
|
||||||
|
return DefWindowProcW(hWnd, WM_CONTEXTMENU, wParam, lParam);
|
||||||
|
else
|
||||||
|
goto Default;
|
||||||
|
}
|
||||||
|
// case WM_NCRBUTTONUP:
|
||||||
|
// DPRINT1("WM_NCRBUTTONUP\n");
|
||||||
|
// goto Default;
|
||||||
|
|
||||||
|
case WM_CONTEXTMENU:
|
||||||
|
{
|
||||||
|
if (DefWindowProcW(hWnd /*GuiData->hWindow*/, WM_NCHITTEST, 0, lParam) == HTCLIENT)
|
||||||
|
{
|
||||||
|
HMENU hMenu = CreatePopupMenu();
|
||||||
|
if (hMenu != NULL)
|
||||||
|
{
|
||||||
|
GuiConsoleAppendMenuItems(hMenu, GuiConsoleEditMenuItems);
|
||||||
|
TrackPopupMenuEx(hMenu,
|
||||||
|
TPM_RIGHTBUTTON,
|
||||||
|
GET_X_LPARAM(lParam),
|
||||||
|
GET_Y_LPARAM(lParam),
|
||||||
|
hWnd,
|
||||||
|
NULL);
|
||||||
|
DestroyMenu(hMenu);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
goto Default;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case WM_SYSCOMMAND:
|
case WM_SYSCOMMAND:
|
||||||
{
|
{
|
||||||
Result = GuiConsoleHandleSysMenuCommand(GuiData, wParam, lParam);
|
Result = GuiConsoleHandleSysMenuCommand(GuiData, wParam, lParam);
|
||||||
|
@ -1486,6 +1542,22 @@ GuiConsoleWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case WM_SETFOCUS:
|
||||||
|
case WM_KILLFOCUS:
|
||||||
|
{
|
||||||
|
Console = GuiData->Console; // Not NULL because checked in GuiGetGuiData.
|
||||||
|
if (ConSrvValidateConsoleUnsafe(Console, CONSOLE_RUNNING, TRUE))
|
||||||
|
{
|
||||||
|
INPUT_RECORD er;
|
||||||
|
er.EventType = FOCUS_EVENT;
|
||||||
|
er.Event.FocusEvent.bSetFocus = (msg == WM_SETFOCUS);
|
||||||
|
ConioProcessInputEvent(Console, &er);
|
||||||
|
|
||||||
|
LeaveCriticalSection(&Console->Lock);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WM_GETMINMAXINFO:
|
case WM_GETMINMAXINFO:
|
||||||
GuiConsoleGetMinMaxInfo(GuiData, (PMINMAXINFO)lParam);
|
GuiConsoleGetMinMaxInfo(GuiData, (PMINMAXINFO)lParam);
|
||||||
break;
|
break;
|
||||||
|
@ -1514,7 +1586,7 @@ GuiConsoleWndProc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||||
// SetWindowText(GuiData->hWindow, GuiData->Console->Title.Buffer);
|
// SetWindowText(GuiData->hWindow, GuiData->Console->Title.Buffer);
|
||||||
// break;
|
// break;
|
||||||
|
|
||||||
default:
|
default: Default:
|
||||||
Result = DefWindowProcW(hWnd, msg, wParam, lParam);
|
Result = DefWindowProcW(hWnd, msg, wParam, lParam);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -1725,7 +1797,7 @@ GuiInit(VOID)
|
||||||
wc.cbSize = sizeof(WNDCLASSEXW);
|
wc.cbSize = sizeof(WNDCLASSEXW);
|
||||||
wc.lpszClassName = GUI_CONSOLE_WINDOW_CLASS;
|
wc.lpszClassName = GUI_CONSOLE_WINDOW_CLASS;
|
||||||
wc.lpfnWndProc = GuiConsoleWndProc;
|
wc.lpfnWndProc = GuiConsoleWndProc;
|
||||||
wc.style = CS_DBLCLKS | CS_OWNDC | CS_HREDRAW | CS_VREDRAW;
|
wc.style = CS_DBLCLKS /* | CS_HREDRAW | CS_VREDRAW */;
|
||||||
wc.hInstance = ConSrvDllInstance;
|
wc.hInstance = ConSrvDllInstance;
|
||||||
wc.hIcon = ghDefaultIcon;
|
wc.hIcon = ghDefaultIcon;
|
||||||
wc.hIconSm = ghDefaultIconSm;
|
wc.hIconSm = ghDefaultIconSm;
|
||||||
|
@ -2207,6 +2279,7 @@ GuiInitConsole(PCONSOLE Console,
|
||||||
/*
|
/*
|
||||||
if (ConsoleStartInfo->dwStartupFlags & STARTF_RUNFULLSCREEN)
|
if (ConsoleStartInfo->dwStartupFlags & STARTF_RUNFULLSCREEN)
|
||||||
{
|
{
|
||||||
|
ConsoleInfo.FullScreen = TRUE;
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
|
@ -73,11 +73,11 @@ PCSR_API_ROUTINE ConsoleServerApiDispatchTable[ConsolepMaxApiNumber - CONSRV_FIR
|
||||||
// SrvShowConsoleCursor,
|
// SrvShowConsoleCursor,
|
||||||
// SrvConsoleMenuControl,
|
// SrvConsoleMenuControl,
|
||||||
// SrvSetConsolePalette,
|
// SrvSetConsolePalette,
|
||||||
// SrvSetConsoleDisplayMode,
|
SrvSetConsoleDisplayMode,
|
||||||
// SrvRegisterConsoleVDM,
|
// SrvRegisterConsoleVDM,
|
||||||
SrvGetConsoleHardwareState,
|
SrvGetConsoleHardwareState,
|
||||||
SrvSetConsoleHardwareState,
|
SrvSetConsoleHardwareState,
|
||||||
// SrvGetConsoleDisplayMode,
|
SrvGetConsoleDisplayMode,
|
||||||
SrvAddConsoleAlias,
|
SrvAddConsoleAlias,
|
||||||
SrvGetConsoleAlias,
|
SrvGetConsoleAlias,
|
||||||
SrvGetConsoleAliasesLength,
|
SrvGetConsoleAliasesLength,
|
||||||
|
@ -164,11 +164,11 @@ BOOLEAN ConsoleServerApiServerValidTable[ConsolepMaxApiNumber - CONSRV_FIRST_API
|
||||||
// FALSE, // SrvShowConsoleCursor,
|
// FALSE, // SrvShowConsoleCursor,
|
||||||
// FALSE, // SrvConsoleMenuControl,
|
// FALSE, // SrvConsoleMenuControl,
|
||||||
// FALSE, // SrvSetConsolePalette,
|
// FALSE, // SrvSetConsolePalette,
|
||||||
// FALSE, // SrvSetConsoleDisplayMode,
|
FALSE, // SrvSetConsoleDisplayMode,
|
||||||
// FALSE, // SrvRegisterConsoleVDM,
|
// FALSE, // SrvRegisterConsoleVDM,
|
||||||
FALSE, // SrvGetConsoleHardwareState,
|
FALSE, // SrvGetConsoleHardwareState,
|
||||||
FALSE, // SrvSetConsoleHardwareState,
|
FALSE, // SrvSetConsoleHardwareState,
|
||||||
// TRUE, // SrvGetConsoleDisplayMode,
|
TRUE, // SrvGetConsoleDisplayMode,
|
||||||
FALSE, // SrvAddConsoleAlias,
|
FALSE, // SrvAddConsoleAlias,
|
||||||
FALSE, // SrvGetConsoleAlias,
|
FALSE, // SrvGetConsoleAlias,
|
||||||
FALSE, // SrvGetConsoleAliasesLength,
|
FALSE, // SrvGetConsoleAliasesLength,
|
||||||
|
@ -255,11 +255,11 @@ PCHAR ConsoleServerApiNameTable[ConsolepMaxApiNumber - CONSRV_FIRST_API_NUMBER]
|
||||||
// "ShowConsoleCursor",
|
// "ShowConsoleCursor",
|
||||||
// "ConsoleMenuControl",
|
// "ConsoleMenuControl",
|
||||||
// "SetConsolePalette",
|
// "SetConsolePalette",
|
||||||
// "SetConsoleDisplayMode",
|
"SetConsoleDisplayMode",
|
||||||
// "RegisterConsoleVDM",
|
// "RegisterConsoleVDM",
|
||||||
"GetConsoleHardwareState",
|
"GetConsoleHardwareState",
|
||||||
"SetConsoleHardwareState",
|
"SetConsoleHardwareState",
|
||||||
// "GetConsoleDisplayMode",
|
"GetConsoleDisplayMode",
|
||||||
"AddConsoleAlias",
|
"AddConsoleAlias",
|
||||||
"GetConsoleAlias",
|
"GetConsoleAlias",
|
||||||
"GetConsoleAliasesLength",
|
"GetConsoleAliasesLength",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue