笔记本小键盘提示 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 = -; static IntPtr dc = GetWindowDC(GetDesktopWindow()); static void Main(string[] args)
{
i = GetKeyState();
while (true)
{
Thread.Sleep(TimeSpan.FromMilliseconds()); //阻断一百毫秒 ,不然CPU会增加
KeyDown();//这里本来想用多线程的,不过发现如果处理不当 内存会递加倒不如直接是单线程了/
}
} static void KeyDown()
{
var op = GetKeyState();
op = op == ? : op == ? : op;//这里写反了 将错就错了
if (op != i)
{
i = op;
dc = GetWindowDC(GetDesktopWindow());
TextOutA(dc, , , op == ? "Close" : "Open ", );//向屏幕输出
//这个参数 在桌面输出文字 ,应该还有一个方法来清空的桌面。不过发现会闪屏,也就算了
//就算不刷新,系统也会自动刷新。
//不会影响使用
}
}
}
}

内存占用还是可以
编译的时候,在属性里改成程序,不用控制台输出,改成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这篇文章的介绍
百度云盘的下载方式程序下载
笔记本小键盘提示 C#的更多相关文章
- Eclipse常用的快捷键
Eclipse常用快捷键 1, Ctrl+S,保存文档. 2, Tab,多行同时右移:选中多行 3, shlft+tab,多行同时左移,选中多行 4, ...
- 最新32位和64位xp,win7,win8,win10系统大全(电脑装机版)
一.系统主要特点 1.安装维护方便快速 - 全自动无人值守安装,采用万能GHOST技术,安装系统过程只需3-5分钟,适 合新旧各种机型. - 集成常见硬件驱动,智能识别+预解压技术,绝大多数硬件可以快 ...
- OSSIM安装与使用感受
下载地址 http://www.alienvault.com OSSIM通过将开源产品进行集成,从而提供一种能够实现安全监控功能的基础平台.它的目标是提供一种集中式.有组织的,能够更好地进行监测和显示 ...
- [IT] 关闭笔记本的蜂鸣提示
很久没有写什么了,今天开过workshop, 稍微放松些, 一时动念上来看看,没想到最近一篇都是2010年的了, 不得不感叹时光流逝之快啊. 那就写点什么吧. 现在每天工作用的DELL笔记本,性能差强 ...
- 笔记本启动时提示错误:amd_xata.sys数字签名无法验证
开机失败,提示adm文件无法验证 文件:Windows\system32\drivers\amd_xata.sys 状态:0xc0000428 信息:Windows 无法验证此文件的数字签名 工具 ...
- 一个.net程序员的安卓之旅-Eclipse设置代码智能提示功能
一个.net程序员的安卓之旅-代码智能提示功能 过完年回来就决心开始学安卓开发,就网上买了个内存条加在笔记本上(因为笔记本原来2G内存太卡了,装了vs2010.SQL Server 2008.orac ...
- JAVA学习笔记(二):eclipse智能提示(转)
存盘 Ctrl+s(肯定知道)注释代码 Ctrl+/取消注释 Ctrl+\(Eclipse3已经都合并到Ctrl+/了)代码辅助 Alt+/快速修复 Ctrl+1代码格式化 Ctrl+Shift+f整 ...
- 借助无线路由器+2台笔记本+Windows桥接功能,成功绕过了微信聊天记录迁移的BUG
最近入了台iphone se,在迁移微信聊天记录的时候,遇到个BUG.它的迁移流程是这样的:需要将两台手机连接到同一个WIFI上面,然后新手机扫旧手机上面的二维码,来完成导入.中途遇到的问题是: 此时 ...
- X86上搭建交叉工具链,来给龙芯笔记本编译本地工具链(未完待续)
故事的背景是,我买了一台龙芯2F的笔记本来装B. 为什么说是装B呢?因为不但操作系统是Linux,而且CPU还是龙芯的. 一般人有这么酷的装备吗?简直是装B大圣啊. 这里一定要申明一点,本人不是IT技 ...
随机推荐
- 开启vmotion,实现虚拟机可以在线迁移的选项
先决条件: 1.vcenter5.5 2.vmotion服务开启 3.分布式交换机已经部署完毕 4.虚拟机在线迁移必须在web管理下,在vclient不可以
- Python模块详解以及import本质,获得文件当前路径os.path.abspath,获得文件的父目录os.path.dirname,放到系统变量的第一位sys.path.insert(0,x)
模块介绍 1.定义: 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻 ...
- 关于服务端控件textbox的disabled属性设置为disabled后在服务端无法取值的问题
在asp.net 1.x版本中,当textbox控件的disabled属性设置为disabled的时候看,在服务端还是可以通过控件id.text获取到textbox的值的,只是不能输入值而已.但是在以 ...
- python开发mysql:表关系&单表简单查询
一 一对多,多对一 1.1 建立多对一 ,一对多的关系需要注意 先建立被关联的表,被关联的字段必须保证时唯一的 在创建关联的表,关联的字段一定是可以重复的 1.2 示例: 出版社 多对一,多个老师可能 ...
- oracle ---中文乱码问题
---- 1.原因分析 ---- 通过对用户反映情况的分析,发现字符集的设置不当是影响ORACLE数据库汉字显示的关键问题.那么字符集是怎么一会事呢?字符集是ORACLE 为适应不同语言文字显示而设定 ...
- 工程添加EF框架的方法
1.VS2015添加新项缺少ADO.net实体数据模型解决方法 手动运行安装目录包中的\packages\EFTools\EFTools.msi即可恢复 2.此时,在添加->新建项目下会出现AD ...
- js 正则匹配 小结
JS的正则表达式 rge.test(str) 检验目标对象中是否包含匹配模式,并相应的返回true或false rge.source str.search(rge) 将返回一个整数值,指明这个匹配 ...
- S3C6410的启动代码分析 一
本文开始第一篇,启动代码的编写,注意,仅仅是启动代码,并不是bootloader,因为只有boot,没有loader. 第一要明确:CPU上电之后,会从某个固定地址执行指令.ARM结构的CPU从地址0 ...
- 【bzoj1015】星球大战starwar
1015: [JSOI2008]星球大战starwar Time Limit: 3 Sec Memory Limit: 162 MBSubmit: 5139 Solved: 2332[Submit ...
- Android selector中的item的顺序
在selector中,要将默认状态的item放在最后面,因为一旦前面的item满足匹配条件,后面的item就不会去匹配.因此,把默认状态的item放在前面的话,后面的item没有执行的机会