我正在C#中創建一個控制檯應用程序,並且我想知道是否可以在按住shift和按箭頭的同時禁用選擇文本。我可以取消在控制檯中選擇文本嗎?
我試過使用Console.CancelKeyPress,但在這種情況下不起作用。
我正在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
不,我沒有聽到它現在我正在尋找 –
看起來像你試圖以相同的方式大大降低可用性,「聰明」的網站試圖做的時禁用上下文菜單或禁用選擇。 –