我對我的帖子在這裏有一點困惑。如何獲得關於5-10鍵的組合鍵?我打算用雙引號捕捉「!qaz $ esz」鍵。獲取在WPF窗口中輸入的長組合密鑰(密碼)
我的應用程序是一個全屏應用程序,可以在輸入正確的密鑰以啓用桌面訪問之前阻止訪問桌面。我有殺死的Explorer.exe並禁用任務管理器時,該程序啓動和啓用它回來後組合的密碼是正確的: -
private void Window_Loaded(object sender, RoutedEventArgs e)
{
/**
* 1. KILL EXPLORER
* 2. DISABLE KEY TO TERMINATE
* = Alt + F4
* = Win + Tab
* = Win + D
* = etc
* 3. ACCEPT SPECIFIC KEY ONLY TO UNLOCK TO MINIMIZE AND SET TOP = FALSE
*
*
* **/
RegistryKey regkey = SetKey(TaskManager.Disabled);
regkey.Close();
}
public static RegistryKey SetKey(TaskManager command)
{
RegistryKey mKey;
string subKey = "Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System";
mKey = Registry.CurrentUser.CreateSubKey(subKey);
switch (command)
{
case TaskManager.Enabled:
mKey.SetValue("DisableTaskMgr", 0);
break;
case TaskManager.Disabled:
mKey.SetValue("DisableTaskMgr", 1);
break;
}
return mKey;
}
但一定有東西缺乏對我的代碼,我無法檢測的組合代碼,更多以密碼。
下面的代碼是我測試以查看我輸入的密鑰是否被捕獲。
public MainWindow()
{
InitializeComponent();
AddHandler(Keyboard.KeyDownEvent, (KeyEventHandler)HandleKeyDownEvent);
}
private void HandleKeyDownEvent(object sender, KeyEventArgs e)
{
if (e.Key == Key.Tab && (Keyboard.Modifiers & (ModifierKeys.Control | ModifierKeys.Shift)) == (ModifierKeys.Control | ModifierKeys.Shift))
{
MessageBox.Show("CTRL + SHIFT + TAB trapped"); // Working
}
if (e.Key == Key.Tab && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control)
{
MessageBox.Show("CTRL + TAB trapped"); // Working
}
if (e.Key == Key.F4 && Keyboard.Modifiers.HasFlag(ModifierKeys.Alt))
{
MessageBox.Show("ALT + F4 trapped"); // Not working
}
if (e.Key == Key.D && Keyboard.Modifiers.HasFlag(ModifierKeys.Windows))
{
MessageBox.Show("WIN + D trapped"); // Not working
}
if ((Keyboard.IsKeyDown(Key.LeftShift) && e.Key == Key.D1) && e.Key ==Key.Q && e.Key == Key.A && e.Key == Key.Z && e.Key == Key.D4 && e.Key == Key.E && e.Key == Key.S && e.Key == Key.Z)
{
MessageBox.Show("COMBOKEY"); // Not working
// RUN EXPLORER
// ENABLE TASK MANAGER
}
}
什麼是不解決是WINLOGO + d,ALT + TAB,ALT + F4和LONG複合鍵。
我有嘗試一些代碼從這裏: -
我看到寫LowLevelAPI一些討論/發佈/條。我不熟悉訪問底層API,並將其應用在WPF應用程序: -
- http://www.tamas.io/c-disable-ctrl-alt-del-alt-tab-alt-f4-start-menu-and-so-on/
- https://www.codeproject.com/articles/14485/low-level-windows-api-hooks-from-c-to-stop-unwante
你的組合鍵不會工作,因爲你只是不能同時按下所有這些鍵。 – BugFinder