Tôi làm cách nào để tắt hoặc khóa nút cửa sổ?Tôi làm cách nào để tắt khóa windows trong C#?
Trả lời
/// <summary>
/// Security routines related to the Windows Key on a standard personal computer Keyboard
/// </summary>
public static class WindowsKey {
/// <summary>
/// Disables the Windows Key
/// </summary>
/// <remarks>May require the current user to logoff or restart the system</remarks>
public static void Disable() {
RegistryKey key = null;
try {
key = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Keyboard Layout", true);
byte[] binary = new byte[] {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x03,
0x00,
0x00,
0x00,
0x00,
0x00,
0x5B,
0xE0,
0x00,
0x00,
0x5C,
0xE0,
0x00,
0x00,
0x00,
0x00
};
key.SetValue("Scancode Map", binary, RegistryValueKind.Binary);
}
catch (System.Exception ex) {
Debug.Assert(false, ex.ToString());
}
finally {
key.Close();
}
}
/// <summary>
/// Enables the Windows Key
/// </summary>
/// <remarks>May require the current user to logoff or restart the system</remarks>
public static void Enable() {
RegistryKey key = null;
try {
key = Registry.LocalMachine.OpenSubKey("System\\CurrentControlSet\\Control\\Keyboard Layout", true);
key.DeleteValue("Scancode Map", true);
}
catch (System.Exception ex) {
Debug.Assert(false, ex.ToString());
}
finally {
key.Close();
}
}
}
câu trả lời rất hay –
Bạn cần móc nối bàn phím. Bắt đầu ở đâu đó như thế này:
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hInstance, 0);
và tiếp tục như thế này:
LRESULT KeyboardProc(...)
{
if (Key == VK_SOMEKEY)
return 1; // Trap key
return CallNextHookEx(...); // Let the OS handle it
}
Và cho biết thêm chi tiết: http://www.codeproject.com/KB/winsdk/AntonioWinLock.aspx
Giả sử bạn muốn vô hiệu hóa phím Windows permenantly và không chỉ khi mã của bạn đang tập trung sau đó bạn có thể làm như vậy bằng cách chỉnh sửa đăng ký như sau:
Để tắt : Thêm một giá trị REG_BINARY mới gọi là "Scancode Map" thành "HKEY_LOCAL_ MÁY \ System \ CurrentControlSet \ Control \ Keyboard Layout" với một giá trị dữ liệu "00000000000000000300000000005BE000005CE000000000"
Để kích hoạt : Xóa "Bản đồ Scancode" giá trị hoàn toàn từ sổ đăng ký.
+1, cảm ơn vì điều đó. Tôi không hài lòng với anh chàng đã phá hỏng bàn phím của tôi. – Tobiasopdenbrouw
Sử dụng móc cửa sổ sạch hơn rất nhiều so với sửa đổi sổ đăng ký. Ngoài ra, đôi khi mọi người đã thiết lập bản đồ cá nhân hóa scancode của riêng mình, và ghi đè lên chúng không phải là một điều rất tốt để làm.
Để sử dụng các cửa sổ chức năng móc chìa khóa bạn cần phải DllImport một chức năng vài WINAPI:
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr GetModuleHandle(string lpModuleName);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr SetWindowsHookEx(int idHook, HookHandlerDelegate lpfn, IntPtr hMod, uint dwThreadId);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
public static extern bool UnhookWindowsHookEx(IntPtr hhk);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern IntPtr CallNextHookEx(IntPtr hhk, int nCode, IntPtr wParam, ref KBDLLHOOKSTRUCT lParam);
[DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]
public static extern short GetKeyState(int keyCode);
Một lời giải thích khá đầy đủ và hương có thể được tìm thấy trên CodeProject. Dưới đây là một direct link cho một tập tin lớp học khép kín từ ví dụ đó làm tất cả mọi thứ (Để có được nó để biên dịch sạch nếu bạn đang sử dụng WPF sẽ yêu cầu bạn tham khảo thủ công System.Windows.Forms dll hoặc chỉ thay đổi 'System.Windows.Forms Tham chiếu .Keys 'để System.Windows.Input.Key nên làm việc).
Hãy nhớ gọi UnhookWindowsHookEx() (lớp này thực hiện việc này trong Dispose()) để hủy các ảnh chụp của bạn hoặc mọi người sẽ ghét bạn.
- 1. Làm cách nào để tắt UAC bằng Windows PowerShell?
- 2. Tôi làm cách nào để mở khóa khóa FileStream?
- 3. Làm cách nào để tắt các phím tắt trong Matplotlib?
- 4. Làm cách nào để tắt ASSERT (x) trong C++?
- 5. Làm cách nào để tắt nút đóng trong C?
- 6. Tôi làm cách nào để tắt xác minh SSL?
- 7. Làm cách nào để sử dụng Lối tắt Windows trong thư mục www WAMP?
- 8. Làm cách nào để tắt máy tính?
- 9. Làm thế nào để Khóa Windows (như "Windows + L") từ .NET?
- 10. Làm cách nào để chương trình của tôi hoạt động trong Windows Vista và Windows 7?
- 11. Làm cách nào để tắt hộp thoại 'Gỡ lỗi/Đóng ứng dụng' trên Windows Vista?
- 12. Làm cách nào để các phím tắt Eclipse của tôi hoạt động trở lại trong Helios?
- 13. HTML - Làm cách nào để tôi có thể tắt tự động sửa văn bản trong TEXTAREA?
- 14. Làm cách nào để chụp khóa nhập trong hộp tổ hợp biểu mẫu windows
- 15. Làm sao tắt tiếng Windows bằng WPF?
- 16. Làm thế nào tôi có thể gửi khóa F4 đến một quy trình trong C#?
- 17. làm cách nào để làm mới DataGrid trong Windows Mobile?
- 18. Làm thế nào để đặt chế độ tắt ứng dụng trong dự án biểu mẫu Windows C#?
- 19. Có cách nào để lấy/chèn luồng không khóa trên basic_iostream trong Windows không?
- 20. Làm cách nào để tắt nút jqueryui
- 21. Làm thế nào để hủy bỏ tắt máy trong Windows (XP | Vista) theo chương trình?
- 22. Tôi làm cách nào để truy vấn bằng cách sử dụng khóa ngoài trong MySQL?
- 23. C# Remoting - Làm thế nào để tắt customErrors
- 24. Làm cách nào để gọi :: CreateProcess trong C++ để khởi chạy một tệp thực thi Windows?
- 25. Làm cách nào để tắt tự động định dạng trong VS2013 cho C++?
- 26. Làm cách nào để tắt cảnh báo cụ thể cho dự án C# trong VS2012?
- 27. Làm thế nào để tắt tiếng bíp trong các emacs trên Windows
- 28. Tôi làm cách nào để tắt đăng nhập trong java c3p0 kết nối gộp lib?
- 29. Làm cách nào để tắt tất cả hiệu ứng cuộn trong ứng dụng của tôi?
- 30. iOS 5: Làm cách nào để tắt bàn phím Emoji trong ứng dụng của tôi?
vĩnh viễn hoặc ngay khi chương trình của bạn đang chạy? – ChrisBD
Chỉ cần nút cửa sổ hoặc các công cụ như Ctrl + Esc? –