最近,我遇到了一台笔记本电脑的问题,该笔记本电脑在某些时候会自动禁用NumLock(例如在退出睡眠模式时)。这促使我寻找以编程方式检查NumLock是否关闭的方法,如果是,请将其打开。
我正在寻找实现这一目标的最佳方法。我想在发生某些事件时运行脚本,例如登录到笔记本电脑时。我打算用计划任务执行此操作,并且我更喜欢使用PowerShell而不是VBScript,但我很乐意使用任何有效的工作。
答案 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}');
}
}