笔记本小键盘提示 C#
穷人家的孩子,买了个笔记本愣是没有小键盘提示灯。
牛的是人家给了一个大写提示灯。
更牛的是他妈给了音量关闭打开的提示灯,还他妈是橙色的!!!!!!
没办法 弄了小程序 来判断是否打开小键盘了。
本来是想用键盘钩子的,不过发现焦点在任务管理器的时候键盘钩子是无法使用的。
转念一想 干嘛那么麻烦。直接检测小键盘不就得了。
直接上代码
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading; using System.Threading.Tasks; namespace IsNumLock { class Program { [DllImport("user32")] public static extern int GetKeyState(int intkey);//144检测NumLock是否打开 [DllImport("Gdi32.dll")] static extern bool TextOutA(IntPtr hdc,int x,int y ,string lpString,int l);//WIN32 参数 在HDC上面输出文字 [DllImport("user32")] public static extern IntPtr GetDesktopWindow();//获取桌面 [DllImport("user32")] static extern IntPtr GetWindowDC(IntPtr hwnd);//获取桌面的DC static int i = -1; static IntPtr dc = GetWindowDC(GetDesktopWindow()); static void Main(string[] args) { i = GetKeyState(144); while (true) { Thread.Sleep(TimeSpan.FromMilliseconds(100)); //阻断一百毫秒 ,不然CPU会增加 KeyDown();//这里本来想用多线程的,不过发现如果处理不当 内存会递加倒不如直接是单线程了/ } } static void KeyDown() { var op = GetKeyState(144); op = op == 65408 ? 0 : op == 65409 ? 1 : op;//这里写反了 将错就错了 if (op != i) { i = op; dc = GetWindowDC(GetDesktopWindow()); TextOutA(dc, 0, 0, op == 0 ? "Close" : "Open ", 5);//向屏幕输出 //这个参数 在桌面输出文字 ,应该还有一个方法来清空的桌面。不过发现会闪屏,也就算了 //就算不刷新,系统也会自动刷新。 //不会影响使用 } } } }
内存占用还是可以
编译的时候,在属性里改成程序,不用控制台输出,改成64或者32 似乎没有什么影响
如果大家用的还是不错 可以加设置开机启动
代码:
var Startrun = Environment.CurrentDirectory + "\\IsNumLock.exe";//程序所在的全路径 RegistryKey RKey = Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run"); RKey.SetValue("IsNumLock", Startrun);
不用代码的方式就用手动修改注册表
win+r 打开运行 输入regedit 打开注册表
计算机\HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run
之后右键 新建 -字符串值 重名为程序的名字,之后在点击此项 右键修改,将程序的目录输入进去就好了包括程序自己
像是
C:\Users\Aang\source\repos\IsNumLock\IsNumLock\bin\Debug\IsNumLock.exe
如果嫌弃注册表太麻烦了可以用
https://jingyan.baidu.com/article/eae07827ad2bba1fec5485ae.html这篇文章的介绍
百度云盘的下载方式程序下载
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现