如何以编程方式禁用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

回到顶部