我尝试了几种解决方案,例如一种->
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;