2012-12-17 142 views
1

我需要在我的應用程序的系統級別禁用特定時間段內的鍵盤/鼠標或兩者。在c中禁用鍵盤/鼠標

我有以下這樣做

public partial class NativeMethods 
    { 
     /// Return Type: BOOL->int 
     ///fBlockIt: BOOL->int 
     [System.Runtime.InteropServices.DllImportAttribute("user32.dll", EntryPoint = "BlockInput")] 
     [return: System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] 
     public static extern bool BlockInput([System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.Bool)] bool fBlockIt); 

    } 

通過這個代碼的任務就完成了,但是當CTRL + ALT + DELETE鍵盤和鼠標的用戶點擊的再次合作。 任何機構可以告訴我如何制止這種情況嗎?

+7

您無法停止CTRL + ALT + DEL的發生。 – Alex

+0

這聽起來很明顯,但如果您處於需要這種情況的場景,也許只需拔掉鼠標和鍵盤將是更好的選擇。當然,除非你正在編寫一個rootkit,否則我懷疑有人會幫助你。 –

+1

你想通過禁用鍵盤和鼠標來解決什麼具體問題? – cadrell0

回答

3

的Windows級別快捷鍵和宏(CTRL + ALT + DELWINDOWS + 大號ALT + TABCTRL + SHIFT + ESC)是沒有被應用程序處理的消息,它們是由Windows運行時處理的。您可以通過創建一個簡單的表單並覆蓋WndProc方法並檢查這些消息來檢查。
無論如何,這裏有一些教程如何掛鉤鍵盤:

  • http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
  • http:// www.codeproject.com/Articles/7294/Processing-Global-Mouse-and-Keyboard-Hooks-in-C
  • http://blogs.msdn.com/b/toub/archive/2006/05/03/589423 .aspx

+0

需要這樣做,當用戶輸入一個錯誤的關鍵,電腦,鍵盤或鼠標或兩者都被鎖定,當用戶刪除該鍵,然後解鎖 –

+0

@HetalJariwala哼哼好...我不知道如果我正確地跟着你,但如果鍵盤/鼠標被阻止你如何從用戶那裏輸入「刪除該鍵」......無論如何...檢查我的編輯... – Leonardo

+0

通過刪除pendrive鍵盤和鼠標再次工作 和tnx的答覆 –