如何以编程方式禁用C#控制台应用程序的快速编辑模式?
我尝试了几种解决方案,例如一种->
http://www.pcreview.co.uk/forums/console-writeline-hangs-if-user-click-into-
console-window-t1412701.html
但是,我观察到对于不同的控制台应用程序,GetConsoleMode(IntPtr hConsoleHandle,out int
mode)中的模式将有所不同。它不是恒定的。
我可以在控制台应用程序上禁用鼠标单击(左右按钮)以实现相同的情况。我发现可以使用IMessageFilter做到这一点,但只能用于Window Form
Application,而不能用于控制台应用程序。
请指导。
回答:
如果要禁用快速编辑模式,则需要调用GetConsoleMode来获取当前模式。然后清除启用快速编辑的位,然后调用SetConsoleMode。假设您具有非托管函数的托管原型,则应编写:
const int ENABLE_QUICK_EDIT = 0x0040;IntPtr consoleHandle = GetConsoleWindow();
UInt32 consoleMode;
// get current console mode
if (!GetConsoleMode(consoleHandle, out consoleMode))
{
// Error: Unable to get console mode.
return;
}
// Clear the quick edit bit in the mode flags
mode &= ~ENABLE_QUICK_EDIT;
// set the new mode
if (!SetConsoleMode(consoleHandle, consoleMode))
{
// ERROR: Unable to set console mode
}
如果要禁用鼠标输入,则要清除鼠标输入位。
const int ENABLE_MOUSE_INPUT = 0x0010;mode &= ~ENABLE_MOUSE_INPUT;
以上是 如何以编程方式禁用C#控制台应用程序的快速编辑模式? 的全部内容, 来源链接: utcz.com/qa/431441.html