Csharp/C#教程:如何按程序调用键盘按键?分享


如何按程序调用键盘按键?

问题 :从一段C#代码中调用要按下的键盘键,但这里有一个问题 :按键不应限于进程/应用程序,而是由整个操作系统接收,所以当程序在背景和不同的forms/程序有重点

目标 :制作一个锁定CapsLockNumLock状态的程序

背景 :我有一台笔记本电脑,这两个键让我很沮丧,我想制作一个在后台运行的应用程序,并且一旦意外启用就会禁用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

(0)
上一篇 2022年1月5日
下一篇 2022年1月5日

精彩推荐