如何检查NumLock是否已启用

时间:2016-12-20 03:59:46

标签: powershell

最近,我遇到了一台笔记本电脑的问题,该笔记本电脑在某些时候会自动禁用NumLock(例如在退出睡眠模式时)。这促使我寻找以编程方式检查NumLock是否关闭的方法,如果是,请将其打开。

我正在寻找实现这一目标的最佳方法。我想在发生某些事件时运行脚本,例如登录到笔记本电脑时。我打算用计划任务执行此操作,并且我更喜欢使用PowerShell而不是VBScript,但我很乐意使用任何有效的工作。

2 个答案:

答案 0 :(得分:3)

在PowerShell中,public void run2ndCmd() { String command = @"e:\22-08-2016\setup.exe"; ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe"); cmdsi.Arguments = command; Process cmd = Process.Start(cmdsi); cmd.WaitForExit(); } public void run1stCmd() { String command = @"/b msiexec.exe /x{79735753-F9D4-49AD-B29E-55C578390D25} /passive &cmd /k"; ProcessStartInfo cmdsi = new ProcessStartInfo("cmd.exe"); cmdsi.Arguments = command; Process cmd = Process.Start(cmdsi); cmd.WaitForExit(); } public void runCmd() { run1stCmd(); //This will execute only when 1st command is finished run2ndCmd() } 是一个只读属性,如果启用了NumLock,它将评估为true。

我写完的剧本如下:

[console]::NumberLock

答案 1 :(得分:0)

基于Thriggle上面的答案,您可以通过添加循环来确保永远不会关闭NumLock。请注意,这在CPU上非常难:

While($true){
if(-not [console]::NumberLock){ 
    $w = New-Object -ComObject WScript.Shell; 
    $w.SendKeys('{NUMLOCK}'); 
}
}