[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[系统相关] 批处理如何实现台式笔记本对应关闭开启数字键盘?

需求:Win To Go常在笔记本台式两者之间使用,希望有个bat放在开机自启动里面
功能:希望能实现笔记本时关闭数字小键盘,台式时则反之打开数字小键盘

回复 1# lzpiheing


在你的台式机上试试:
  1. reg add "HKEY_USERS\.DEFAULT\Control Panel\Keyboard" /v InitialKeyboardIndicators /t REG_SZ /d "2" /f
复制代码
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

回复 2# Batcher


    老哥,这是设置开机是启动数字键盘还是关闭数字键盘的注册表,只有下一次启动才生效

TOP

回复 1# lzpiheing


    ::【模拟按NUMLOCK键】

@echo off
>"temp.vbs" echo createobject("wscript.shell").sendkeys "{NUMLOCK}"
temp.vbs
del /q temp.vbs
exit
我是小白,希望老师多多帮助

TOP

回复 4# yyz219


    要怎么判断数字键盘是否开启了

TOP

回复  yyz219


    要怎么判断数字键盘是否开启了
lzpiheing 发表于 2022-6-16 11:35


我不晓得,等待高手出现
我是小白,希望老师多多帮助

TOP

回复 5# lzpiheing


结合2楼的注册表键值信息做判断,如果键值为0或者非2数值,说明没有开启。

TOP

回复 7# yakeyun


    我的系统没生效,明明是2,但是重启前你关闭他就关闭,开启他就开启,所以还是得先判断是台式的还是笔记本,然后判断是否已经开启,再配合vbs按,比较稳

TOP

如果当前指示灯不亮,则打开num lock键盘指示灯.vbs
  1. Set ws = CreateObject("Wscript.Shell")
  2. Set fso = CreateObject("Scripting.FileSystemObject")
  3. If LCase(Right(WScript.FullName, 11)) = "wscript.exe" Then
  4.     ws.run "cscript """ & WScript.ScriptFullName & chr(34), 0
  5.     WSH.Quit
  6. End If
  7. Set tmp = fso.GetSpecialFolder(2)
  8. Set systemroot = fso.GetSpecialFolder(0)
  9. net = systemroot&"\Microsoft.NET\Framework"
  10. Call CreateCs
  11. Set SubFolders = fso.GetFolder(net).SubFolders
  12. For Each Folder In SubFolders
  13.     If fso.FileExists(Folder&"\csc.exe") Then
  14.         cscpath = Folder&"\csc.exe"
  15.         Exit For
  16.     End If
  17. Next
  18. If cscpath = "" Then
  19.     'Msgbox "未安装Microsoft .NET Framework 2.0及以上版本组件或是相关程序缺失!"
  20.     WSH.Quit
  21. Else
  22.     If not fso.FileExists(tmp&"\$CheckKeyLocked.exe") Then
  23.         ws.Run cscpath&" /out:"""&tmp&"\$CheckKeyLocked.exe"" """&tmp&"\$CheckKeyLocked.cs""", 0, True
  24.     End If
  25. End If
  26. Set oExec = ws.Exec(tmp&"\$CheckKeyLocked.exe")
  27. 'Msgbox oExec.StdOut.ReadAll '结果
  28. if oExec.StdOut.ReadAll = 0 Then
  29.     ws.SendKeys"{NUMLOCK}"
  30. End If
  31. Function CreateCs
  32.     Set cs = fso.CreateTextFile(tmp&"\$CheckKeyLocked.cs", 2)
  33.     cs.Write _
  34.     "using System;using System.Runtime.InteropServices;" & vbCrLf & _
  35.     "public class CheckKeyLocked{" & vbCrLf & _
  36.     "   [DllImport(""user32.dll"", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)]" & vbCrLf & _
  37.     "   public static extern ushort GetKeyState(int keyCode);" & vbCrLf & _
  38.     "   public static void Main(){" & vbCrLf & _
  39.     "        Console.WriteLine(((GetKeyState(0x90) & 0xffff) != 0?1:0));" & vbCrLf & _
  40.     "}}"
  41. End Function
复制代码

TOP

回复 9# ygqiang


    我试试感谢大佬

TOP

返回列表