Serguei Kouzmine
21-11-2023, 17:47
это просто упражнение в освоении страницы https://www.pinvoke.net/default.aspx/kernel32/ConsoleFunctions.html
# https://www.pinvoke.net/default.aspx/kernel32/ConsoleFunctions.html
add-type -typedefinition @'
using System;
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32;
public class Data {
public static int STD_ERROR_HANDLE = -12;
public static int STD_INPUT_HANDLE = -10;
public static int STD_OUTPUT_HANDLE = -11;
[Flags]
private enum ConsoleModes : uint {
ENABLE_PROCESSED_INPUT = 0x0001,
ENABLE_LINE_INPUT = 0x0002,
ENABLE_ECHO_INPUT = 0x0004,
ENABLE_WINDOW_INPUT = 0x0008,
ENABLE_MOUSE_INPUT = 0x0010,
ENABLE_INSERT_MODE = 0x0020,
ENABLE_QUICK_EDIT_MODE = 0x0040,
ENABLE_EXTENDED_FLAGS = 0x0080,
ENABLE_AUTO_POSITION = 0x0100,
ENABLE_VIRTUAL_TERMINAL_INPUT = 0x0200,
ENABLE_PROCESSED_OUTPUT = 0x0001,
ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002,
ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004,
DISABLE_NEWLINE_AUTO_RETURN = 0x0008,
ENABLE_LVB_GRID_WORLDWIDE = 0x0010
}
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr GetStdHandle(int nStdHandle);
[DllImport("kernel32.dll")]
static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
[DllImport("kernel32.dll")]
static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
public static void enableQuickEdit() {
IntPtr _ConsoleHandle = GetStdHandle(STD_INPUT_HANDLE);
uint _ConsoleMode = 0;
GetConsoleMode(_ConsoleHandle, out _ConsoleMode);
Console.Error.WriteLine(_ConsoleMode);
_ConsoleMode |= (uint )ConsoleModes.ENABLE_QUICK_EDIT_MODE;
Console.Error.WriteLine(_ConsoleMode);
SetConsoleMode(_ConsoleHandle, _ConsoleMode);
}
public static void disableQuickEdit() {
IntPtr _ConsoleHandle = GetStdHandle(STD_INPUT_HANDLE);
uint _ConsoleMode = 0;
GetConsoleMode(_ConsoleHandle, out _ConsoleMode);
Console.Error.WriteLine(_ConsoleMode);
_ConsoleMode &= 0xffff - (uint) (ConsoleModes.ENABLE_QUICK_EDIT_MODE);
Console.Error.WriteLine(_ConsoleMode);
SetConsoleMode(_ConsoleHandle, _ConsoleMode);
}
}
'@
[Data]::enableQuickEdit()
[Data]::disableQuickEdirt()
приделать логику когда вызывать enableQuickEdit а когда disableQuickEdirt сможете сами надеюсь
# https://www.pinvoke.net/default.aspx/kernel32/ConsoleFunctions.html
add-type -typedefinition @'
using System;
using System.IO;
using System.Runtime.InteropServices;
using Microsoft.Win32;
public class Data {
public static int STD_ERROR_HANDLE = -12;
public static int STD_INPUT_HANDLE = -10;
public static int STD_OUTPUT_HANDLE = -11;
[Flags]
private enum ConsoleModes : uint {
ENABLE_PROCESSED_INPUT = 0x0001,
ENABLE_LINE_INPUT = 0x0002,
ENABLE_ECHO_INPUT = 0x0004,
ENABLE_WINDOW_INPUT = 0x0008,
ENABLE_MOUSE_INPUT = 0x0010,
ENABLE_INSERT_MODE = 0x0020,
ENABLE_QUICK_EDIT_MODE = 0x0040,
ENABLE_EXTENDED_FLAGS = 0x0080,
ENABLE_AUTO_POSITION = 0x0100,
ENABLE_VIRTUAL_TERMINAL_INPUT = 0x0200,
ENABLE_PROCESSED_OUTPUT = 0x0001,
ENABLE_WRAP_AT_EOL_OUTPUT = 0x0002,
ENABLE_VIRTUAL_TERMINAL_PROCESSING = 0x0004,
DISABLE_NEWLINE_AUTO_RETURN = 0x0008,
ENABLE_LVB_GRID_WORLDWIDE = 0x0010
}
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr GetStdHandle(int nStdHandle);
[DllImport("kernel32.dll")]
static extern bool GetConsoleMode(IntPtr hConsoleHandle, out uint lpMode);
[DllImport("kernel32.dll")]
static extern bool SetConsoleMode(IntPtr hConsoleHandle, uint dwMode);
public static void enableQuickEdit() {
IntPtr _ConsoleHandle = GetStdHandle(STD_INPUT_HANDLE);
uint _ConsoleMode = 0;
GetConsoleMode(_ConsoleHandle, out _ConsoleMode);
Console.Error.WriteLine(_ConsoleMode);
_ConsoleMode |= (uint )ConsoleModes.ENABLE_QUICK_EDIT_MODE;
Console.Error.WriteLine(_ConsoleMode);
SetConsoleMode(_ConsoleHandle, _ConsoleMode);
}
public static void disableQuickEdit() {
IntPtr _ConsoleHandle = GetStdHandle(STD_INPUT_HANDLE);
uint _ConsoleMode = 0;
GetConsoleMode(_ConsoleHandle, out _ConsoleMode);
Console.Error.WriteLine(_ConsoleMode);
_ConsoleMode &= 0xffff - (uint) (ConsoleModes.ENABLE_QUICK_EDIT_MODE);
Console.Error.WriteLine(_ConsoleMode);
SetConsoleMode(_ConsoleHandle, _ConsoleMode);
}
}
'@
[Data]::enableQuickEdit()
[Data]::disableQuickEdirt()
приделать логику когда вызывать enableQuickEdit а когда disableQuickEdirt сможете сами надеюсь