标题: [系统相关] 批处理如何实现台式笔记本对应关闭开启数字键盘? [打印本页]
作者: lzpiheing 时间: 2022-6-14 13:44 标题: 批处理如何实现台式笔记本对应关闭开启数字键盘?
需求:Win To Go常在笔记本台式两者之间使用,希望有个bat放在开机自启动里面
功能:希望能实现笔记本时关闭数字小键盘,台式时则反之打开数字小键盘
作者: Batcher 时间: 2022-6-14 15:25
回复 1# lzpiheing
在你的台式机上试试:- reg add "HKEY_USERS\.DEFAULT\Control Panel\Keyboard" /v InitialKeyboardIndicators /t REG_SZ /d "2" /f
复制代码
作者: lzpiheing 时间: 2022-6-15 07:28
回复 2# Batcher
老哥,这是设置开机是启动数字键盘还是关闭数字键盘的注册表,只有下一次启动才生效
作者: yyz219 时间: 2022-6-16 10:50
回复 1# lzpiheing
::【模拟按NUMLOCK键】
@echo off
>"temp.vbs" echo createobject("wscript.shell").sendkeys "{NUMLOCK}"
temp.vbs
del /q temp.vbs
exit
作者: lzpiheing 时间: 2022-6-16 11:35
回复 4# yyz219
要怎么判断数字键盘是否开启了
作者: yyz219 时间: 2022-6-16 11:44
回复 yyz219
要怎么判断数字键盘是否开启了
lzpiheing 发表于 2022-6-16 11:35
我不晓得,等待高手出现
作者: yakeyun 时间: 2022-6-16 12:34
回复 5# lzpiheing
结合2楼的注册表键值信息做判断,如果键值为0或者非2数值,说明没有开启。
作者: lzpiheing 时间: 2022-6-16 17:22
回复 7# yakeyun
我的系统没生效,明明是2,但是重启前你关闭他就关闭,开启他就开启,所以还是得先判断是台式的还是笔记本,然后判断是否已经开启,再配合vbs按,比较稳
作者: ygqiang 时间: 2022-6-16 17:44
如果当前指示灯不亮,则打开num lock键盘指示灯.vbs- Set ws = CreateObject("Wscript.Shell")
- Set fso = CreateObject("Scripting.FileSystemObject")
- If LCase(Right(WScript.FullName, 11)) = "wscript.exe" Then
- ws.run "cscript """ & WScript.ScriptFullName & chr(34), 0
- WSH.Quit
- End If
- Set tmp = fso.GetSpecialFolder(2)
- Set systemroot = fso.GetSpecialFolder(0)
- net = systemroot&"\Microsoft.NET\Framework"
- Call CreateCs
- Set SubFolders = fso.GetFolder(net).SubFolders
- For Each Folder In SubFolders
- If fso.FileExists(Folder&"\csc.exe") Then
- cscpath = Folder&"\csc.exe"
- Exit For
- End If
- Next
- If cscpath = "" Then
- 'Msgbox "未安装Microsoft .NET Framework 2.0及以上版本组件或是相关程序缺失!"
- WSH.Quit
- Else
- If not fso.FileExists(tmp&"\$CheckKeyLocked.exe") Then
- ws.Run cscpath&" /out:"""&tmp&"\$CheckKeyLocked.exe"" """&tmp&"\$CheckKeyLocked.cs""", 0, True
- End If
- End If
- Set oExec = ws.Exec(tmp&"\$CheckKeyLocked.exe")
- 'Msgbox oExec.StdOut.ReadAll '结果
- if oExec.StdOut.ReadAll = 0 Then
- ws.SendKeys"{NUMLOCK}"
- End If
- Function CreateCs
- Set cs = fso.CreateTextFile(tmp&"\$CheckKeyLocked.cs", 2)
- cs.Write _
- "using System;using System.Runtime.InteropServices;" & vbCrLf & _
- "public class CheckKeyLocked{" & vbCrLf & _
- " [DllImport(""user32.dll"", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]" & vbCrLf & _
- " public static extern ushort GetKeyState(int keyCode);" & vbCrLf & _
- " public static void Main(){" & vbCrLf & _
- " Console.WriteLine(((GetKeyState(0x90) & 0xffff) != 0?1:0));" & vbCrLf & _
- "}}"
- End Function
复制代码
作者: lzpiheing 时间: 2022-6-16 19:25
回复 9# ygqiang
我试试感谢大佬
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |