2014-01-25 97 views

回答

0

這是不可能禁用快捷鍵CTRL + ALT + DELETE具體而言, 這是因爲CTRL + ALT +刪除組合是一個深度烘焙的系統調用。但是可以將它們分開過濾,因此您可以使用這些鍵來防止其他快捷方式。 要做到這一點,你需要掛接到操作系統事件:


這個鉤到系統的事件。

private delegate IntPtr LowLevelKeyboardProc(int nCode, IntPtr wParam, IntPtr lParam); 
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
private static extern IntPtr SetWindowsHookEx(int id, LowLevelKeyboardProc callback, IntPtr hMod, uint dwThreadId); 

如果您將ID設置爲13,它會掛鉤到鍵盤輸入。


回調

你需要幾件事情:

[StructLayout(LayoutKind.Sequential)] 
private struct KBDLLHOOKSTRUCT 
{ 
    public readonly Keys key; 
    private readonly int scanCode; 
    private readonly int flags; 
    private readonly int time; 
    private readonly IntPtr extra; 
} 

這個結構需要讀取C#中的實際鍵。

這可以用來通過給代表一個功能,如:使用這個時候你可以得到從objKeyInfo.key

關鍵有關Ctrl更多的背景信息

private static IntPtr CaptureKey(int nCode, IntPtr wp, IntPtr lp) 
{ 
    if (nCode < 0) return (IntPtr) 1; //CallNextHookEx(_ptrHook, nCode, wp, lp); 
    KBDLLHOOKSTRUCT objKeyInfo = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lp, typeof(KBDLLHOOKSTRUCT)); 
    if(objKeyInfo.key == /*some key*/){ 
     // do something 
    } 
} 

- Alt - Del組合: Is there any method to disable logoff,lock and taskmanager in ctrl+alt+del in C#