我可以取消在控制台中选择文本吗?
我正在C#中创建一个控制台应用程序,并且我想知道是否可以在按住shift和按箭头的同时禁用选择文本。我可以取消在控制台中选择文本吗?
我试过使用Console.CancelKeyPress,但在这种情况下不起作用。
尝试使用以下方法:
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr SetWindowsHookEx(int idHook,
LowLevelKeyboardProc lpfn, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
private static extern bool UnhookWindowsHookEx(IntPtr hhk);
,比挂钩方法:
private static IntPtr HookCb(int nCode, IntPtr wParam, IntPtr lParam)
{
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int keyCode = Marshal.ReadInt32(lParam);
string keyName = ((Keys)keyCode).ToString();
//there you can define which key was pressed and react accordingly
}}
它说我对这个LowLevelKeyboardProc和这个WM_KEYDOWN不在exterm列出在curent上下文 –
添加到您的代码:private const int WM_KEYDOWN = 0x0100; private const int WM_KEYUP = 0x0101; 私人委托IntPtr LowLevelKeyboardProc(int nCode,IntPtr wParam,IntPtr lParam); – VitaliyK
不幸的是它没有工作:/ HookCb()从未调用 –
你有没有试过为您处理使用挂钩?像看起来像SetWindowsHookEx的本地方法,UnhookWindowsHookEx?在那里,你可以检测到哪些按键被按下,并按照我的记忆压制它们。 – VitaliyK
不,我没有听到它现在我正在寻找 –
看起来像你试图以相同的方式大大降低可用性,“聪明”的网站试图做的时禁用上下文菜单或禁用选择。 –