Windows düğmesini nasıl devre dışı bırakabilir veya kilitleyebilirim?Windows anahtarı C# nasıl devre dışı bırakabilirim?
cevap
/// <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();
}
}
}
çok güzel cevap –
Klavye kancaya ihtiyacınız var.
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD, KeyboardProc, hInstance, 0);
ve bu şekilde devam: Böyle bir yerde başlatır http://www.codeproject.com/KB/winsdk/AntonioWinLock.aspx
ne zaman kodunuzu sadece permenantly olup Windows tuşu devre dışı bırakmak istediğinizi varsayarsak:
LRESULT KeyboardProc(...)
{
if (Key == VK_SOMEKEY)
return 1; // Trap key
return CallNextHookEx(...); // Let the OS handle it
}
Ve daha fazla ayrıntı için odakta ise kayıt defterini aşağıdaki gibi düzenleyebilirsiniz:
'u devre dışı bırakmak için : "HKEY_LOCAL_ MAKİNASI \ System \ CurrentControlSet Control \ Keyboard Layout \" veri değeri ile "00000000000000000300000000005BE000005CE000000000"
etkinleştirmek için için "Scancode Harita" adlı yeni REG_BINARY'dir değeri ekleyin : "Scancode Map" kayıt defterinden tamamen silin.
+1, bunun için teşekkürler. Yine de klavyemi harap eden adamdan memnun olmazdım. – Tobiasopdenbrouw
Windows kancalarını kullanmak, kayıt defterini değiştirmekten çok daha temizdir. Buna ek olarak, bazen insanlar kendi kişiselleştirilmiş tarama kodlarını kendileri kurarlar ve üzerine yazmaları çok iyi bir şey değildir.
pencereler anahtar kanca işlevlerini kullanmak için bir kaç winapi fonksiyonlarını DLLImport gerekir:[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);
Oldukça tam açıklama ve örneklerde CodeProject bulunabilir. İşte bu örnekte bir kendini içeren bir sınıf dosyası için bir direct link olduğunu (WPF kullanıyorsanız temiz derlemek için) System.Windows.Forms dll veya manüel olarak 'System.Windows.Forms değiştirmeyi gerektirir. .Keys 'System.Windows.Input.Key başvurusu çalışmalıdır.
UnhookWindowsHookEx() öğesini (sınıf, bunu Dispose() içinde) çektiğinizde yakalamanızı veya kişilerinizin senden nefret etmesini unutmayın.
- 1. Windows 8'de portre modunu nasıl devre dışı bırakabilirim?
- 2. Tüm setTimeout olaylarını nasıl devre dışı bırakabilirim?
- 3. Tomcat önbelleğe almayı nasıl devre dışı bırakabilirim?
- 4. GCC'yi kullanırken vektörleştirmeyi nasıl devre dışı bırakabilirim?
- 5. Çizik önizleme penceresini nasıl devre dışı bırakabilirim?
- 6. Linux'ta Nagle'in algoritmasını nasıl devre dışı bırakabilirim?
- 7. _moz_resizing özelliğini nasıl devre dışı bırakabilirim?
- 8. Ckeditor'daki kayıt düğmesini nasıl devre dışı bırakabilirim?
- 9. UITextField macunu nasıl devre dışı bırakabilirim?
- 10. XIA8'de Castalia'yı nasıl devre dışı bırakabilirim?
- 11. WPF Datagrid'te düzenleme hücrelerini nasıl devre dışı bırakabilirim?
- 12. UglifyJS zincirleme bildirimlerini virgülle nasıl devre dışı bırakabilirim? Breakpoint'leri kullanamazsınız
- 13. Belirli klasörlerde htaccess kullanarak auto_prepend'i nasıl devre dışı bırakabilirim?
- 14. jQuery-UI kaydırıcısı - klavye girişini nasıl devre dışı bırakabilirim?
- 15. sbtassembly kullanarak sbt'de jar sıkıştırmasını nasıl devre dışı bırakabilirim?
- 16. Pandalar verilerini çizerken etiketi nasıl devre dışı bırakabilirim?
- 17. Emacs'im beyaz boşluk bırakıyor. Bu davranışı nasıl devre dışı bırakabilirim?
- 18. SQL Server 2000'deki girişleri nasıl devre dışı bırakabilirim?
- 19. "TWebbrowser" ile ilgili javascript hatalarını nasıl devre dışı bırakabilirim?
- 20. Tüm grup/dosya klasörü için ARC'yi nasıl devre dışı bırakabilirim?
- 21. OS X El Capitan'daki Bash oturumlarını nasıl devre dışı bırakabilirim?
- 22. eonasdan-datetimepicker'daki "ücretsiz" kullanıcı girişini nasıl devre dışı bırakabilirim?
- 23. Drupal modülünü programlı olarak nasıl devre dışı bırakabilirim?
- 24. Ekranda aşağı çekilirken Bildirim Merkezi'nin görüntüsünü nasıl devre dışı bırakabilirim?
- 25. Meteorda canlı yeniden yüklemeyi nasıl devre dışı bırakabilirim?
- 26. Tepki yerel gezgini geri döndürmeyi nasıl devre dışı bırakabilirim
- 27. EdmMetadata tablosuna karşı sorgular yayınlamayı nasıl devre dışı bırakabilirim?
- 28. Knockout kullanarak tıklama olayını nasıl devre dışı bırakabilirim?
- 29. Wicket 1.5'de serileşmeyi nasıl devre dışı bırakabilirim?
- 30. Android 2.2'deki ListView aşırı hızını nasıl devre dışı bırakabilirim?
Programınız çalışırken ya da sadece çalışırken? – ChrisBD
Sadece pencere düğmesi veya Ctrl + Esc gibi şeyler mi? –