如何按程序调用键盘按键?
问题 :从一段C#代码中调用要按下的键盘键,但这里有一个问题 :按键不应限于进程/应用程序,而是由整个操作系统接收,所以当程序在背景和不同的forms/程序有重点
目标 :制作一个锁定CapsLock和NumLock状态的程序
背景 :我有一台笔记本电脑,这两个键让我很沮丧,我想制作一个在后台运行的应用程序,并且一旦意外启用就会禁用CapsLock ,并且NumLock永远不会被禁用,我想扩展我的编码知识,我试图找到解决方案,但没有一个能解决(整个)问题。
using System; using System.Runtime.InteropServices; public class CapsLockControl { public const byte VK_NUMLOCK = 0x90; public const byte VK_CAPSLOCK = 0x14; [DllImport("user32.dll")] static extern void keybd_event(byte bVk, byte bScan, uint dwFlags,UIntPtr dwExtraInfo); const int KEYEVENTF_EXTENDEDKEY = 0x1; const int KEYEVENTF_KEYUP = 0x2; public static void Main() { if (Control.IsKeyLocked(Keys.CapsLock)) { Console.WriteLine("Caps Lock key is ON. We'll turn it off"); keybd_event(CapsLockControl.VK_CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY, (UIntPtr) 0); keybd_event(CapsLockControl.VK_CAPSLOCK, 0x45, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, (UIntPtr) 0); } else { Console.WriteLine("Caps Lock key is OFF"); } } }
您必须使用user32.dll挂钩键盘。 这个codeProject 示例应该可以帮助您入门
如果你想要实际被按下禁用大写锁定,你可以用它来完成
SetWindowsHookEx
这里有很多关于如何使用它的信息。 例如
Global Hook Keylogger问题
全局键盘挂钩,不禁用窗体外的用户输入
和当然msdn
https://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx
您可以尝试模拟键盘和鼠标点击的CodePlex项目。
它叫做Windows输入模拟器,可以在这里找到
上述就是C#学习教程:如何按程序调用键盘按键?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1020968.html