当屏幕保护程序激活时,切换滚动锁



我希望做一个应用程序,在后台运行在窗口的任何时候,切换滚动锁定当我的电脑的屏幕保护程序启用,然后切换回它关闭后,如果可能的话。

原因是我有一个键盘,它会根据滚动锁灯的状态亮起来。如果键盘能在我不使用的时候自动关灯,那该有多酷啊。

我知道一些代码在VBscript,一些在Python,和很多在VB。我试过使用这个代码片段,并把它变成这样:

strComputer = "computername"
Set wshShell =wscript.CreateObject("WScript.Shell")
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process")
Do
  WScript.Sleep 300
  For Each objProcess In colProcesses
    If Right(objProcess.Name, 4) = ".scr" Then
      wshShell.SendKeys "{SCROLLLOCK}"
    End If 
  Next
Loop

,只有当程序运行时,屏幕保护程序已经打开。请帮助我找出如何在屏幕保护程序打开时每300个刻度检查一次,或者告诉我如何用标题中列出的其他语言之一。

WMI查询的结果反映了查询运行时的状态。它不会自动刷新,因此不会拾取在其初始运行后启动的任何进程。将查询移动到外部循环中,以便每次迭代都重新运行:

Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Do
  WScript.Sleep 300
  Set colProcesses = objWMIService.ExecQuery("Select * from Win32_Process")
  For Each objProcess In colProcesses
    If Right(objProcess.Name, 4) = ".scr" Then
      wshShell.SendKeys "{SCROLLLOCK}"
    End If 
  Next
Loop

最新更新