Quelqu'un peut-il s'il vous plaît me dire comment désactiver les touches de commutation de tâche à l'aide C#Comment Réprimer touches de commutation de tâches (winkey, alt-tab, alt-esc, ctrl-esc) en utilisant le crochet du clavier bas niveau en C#
Répondre
J'ai le code complet pour désactiver Touche Windows, Alt +Tab et ainsi de suite ..
Et maintenant, je suis fournir le code suivant comme référence pour d'autres:
/* Code to Disable WinKey, Alt+Tab, Ctrl+Esc Starts Here */
// Structure contain information about low-level keyboard input event
[StructLayout(LayoutKind.Sequential)]
private struct KBDLLHOOKSTRUCT
{
public Keys key;
public int scanCode;
public int flags;
public int time;
public IntPtr extra;
}
//System level functions to be used for hook and unhook keyboard input
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);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern bool UnhookWindowsHookEx(IntPtr hook);
[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr CallNextHookEx(IntPtr hook, int nCode, IntPtr wp, IntPtr lp);
[DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)]
private static extern IntPtr GetModuleHandle(string name);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern short GetAsyncKeyState(Keys key);
//Declaring Global objects
private IntPtr ptrHook;
private LowLevelKeyboardProc objKeyboardProcess;
private IntPtr captureKey(int nCode, IntPtr wp, IntPtr lp)
{
if (nCode >= 0)
{
KBDLLHOOKSTRUCT objKeyInfo = (KBDLLHOOKSTRUCT)Marshal.PtrToStructure(lp, typeof(KBDLLHOOKSTRUCT));
// Disabling Windows keys
if (objKeyInfo.key == Keys.RWin || objKeyInfo.key == Keys.LWin || objKeyInfo.key == Keys.Tab && HasAltModifier(objKeyInfo.flags) || objKeyInfo.key == Keys.Escape && (ModifierKeys & Keys.Control) == Keys.Control)
{
return (IntPtr)1; // if 0 is returned then All the above keys will be enabled
}
}
return CallNextHookEx(ptrHook, nCode, wp, lp);
}
bool HasAltModifier(int flags)
{
return (flags & 0x20) == 0x20;
}
/* Code to Disable WinKey, Alt+Tab, Ctrl+Esc Ends Here */
Puis à l'intérieur du Form_Load();
private void Form_Load(object sender, EventArgs e)
{
ProcessModule objCurrentModule = Process.GetCurrentProcess().MainModule;
objKeyboardProcess = new LowLevelKeyboardProc(captureKey);
ptrHook = SetWindowsHookEx(13, objKeyboardProcess, GetModuleHandle(objCurrentModule.ModuleName), 0);
}
Je reçois cette erreur Erreur \t 'System.Windows.Input.ModifierKeys 'est un' type 'mais est utilisé comme une' variable' – Omar
J'ai fini par utiliser cette vérification' if (objKeyInfo.key == Keys.RWin || objKeyInfo .key == Keys.Win || objKeyInfo.key == Keys.Tab && HasAltModifier (objKeyInfo.flags) || objKeyInfo.key == Keys.Escape && (Clavier.Modifiers & ModifierKeys.Control)! = 0) ' – Omar
J'utilise ce code, mais j'ai une erreur 'Tenté de lire ou d'écrire de la mémoire protégée. C'est souvent une indication que l'autre mémoire est corrompue ' – Niloo
Vous pouvez utiliser l'événement OnKeyDown pour capturer les touches enfoncées et supprimer celles que vous ne voulez pas autoriser.
Le BabySmash application de Scott Hanselman désactive la plupart des touches comme alt-tab alt-esc, etc. La plupart des source and development peuvent être trouvées sur son blog. La source est sur GitHub. Dans la source, vous verrez la classe InterceptKeys qui utilise de nombreux appels win32 pour obtenir des crochets de bas niveau sur les touches enfoncées. Il les traite ensuite dans HookCallback dans le fichier App.xaml.cs. J'espère que cela t'aides.
a ajouté une autre question SO similaire. Vous ne pouvez pas attraper ctrl-alt-del, et probablement pas alt-tab, mais la plupart des autres. Devrait être capable de gagner la clé. –
l'exemple babysmash fait ce que vous cherchez –
Alt-Tab est attrapable, mais pas recommandé. Ctrl-Alt-Suppr ne peut pas être intercepté en mode utilisateur. Arrêt complet. – ChrisV
- 1. Suppress touches de commutation de tâches (winkey, alt-tab, alt-esc, ctrl-esc) à l'aide de crochet du clavier à faible niveau
- 2. Crochet de clavier de bas niveau C# ne fonctionne pas
- 3. Le crochet du clavier modifie le comportement des touches
- 4. Comment identifier les touches du clavier en utilisant C#
- 5. Keyhook de bas niveau
- 6. réprimer l'erreur en utilisant fread()
- 7. Utilisation d'un crochet de bas niveau pour modifier les caractères du clavier
- 8. Crochet de clavier bas niveau global gel dans C# .net 3.5
- 9. Désactiver les touches du clavier lorsque la console de c Exécuter en utilisant c ou C++
- 10. Programmation Bluetooth de bas niveau en C++
- 11. Le crochet de bas niveau global est appelé lorsque SendInput est créé. comment l'éviter?
- 12. Surveillance des crochets de bas niveau [C]
- 13. Génération réelle de sons de bas niveau en C#?
- 14. Comprendre le hook de la souris et du clavier de bas niveau (win32)
- 15. Claviers multiples et crochets de bas niveau
- 16. clés de détection de direction du clavier en utilisant keyPressed
- 17. Entrée de clavier en utilisant ActionScript 3
- 18. kill processus dans le gestionnaire de tâches en utilisant C#
- 19. Crochet de clavier global sous Linux?
- 20. Manipulation du clavier au niveau du formulaire
- 21. Saisir les touches du clavier
- 22. Comment désactiver les touches sélectives sur le clavier?
- 23. Détails du plus bas niveau de x86
- 24. Crochet clavier Java
- 25. ToAscii/ToUnicode dans un crochet de clavier détruit les touches mortes
- 26. Crochet de clavier JNA dans Windows
- 27. Flèches du clavier vers le haut et vers le bas
- 28. Crochet de clavier global haut de gamme pour C# et WPF pour la lecture d'un scanner de carte à clavier
- 29. Crochet KeyPress événement en C#
- 30. où obtenir le code clé pour le crochet du clavier dans C#
Pourquoi voudriez-vous faire cela? – Fosco
Tout type d'application de kiosque ... Question valide ne sais pas pourquoi le DV, c'est probablement un doublon si. –
La plupart des jeux sur PC le font. Le plein écran exclusif améliore les performances sur de nombreux systèmes, et qui veut que le chat Skype apparaisse lorsque vous essayez de jouer à votre jeu préféré? – yoyo