2012-08-09 38 views
2

我想知道如果我可以使用下面的相同代码并做一些小的更改以添加我需要的功能。事情是这样写的:批量中的Capslock OFF - 替代品

::::Set WshShell = CreateObject("WScript.Shell") 
::::WshShell.SendKeys "{capslock}" 
Set WshShell = Nothing 
findstr "^::::" "%~sf0" > temp.vbs & Cscript //nologo temp.vbs & del temp.vbs 
echo Capslock is off 

结果:

  • 它激活CAPS ON,如果它已经关闭
  • 它激活CAPS关闭,如果它已经在

我想将其更改为总是关闭。我怎样才能在代码中做这个小小的修改?

谢谢

+0

@Greg山毛榉:问题是,如果用户已经关闭了他的大写锁,上面的代码将打开大写字母。我总是想要盖帽。不过,我也想在我的批处理中使用嵌入的VBS。 – 2012-08-09 23:26:41

回答

5

此VBS使用Word.Application查询CAPS状态。如果CAPS处于开启状态,那么我们将其关闭。

Set objShell = CreateObject("WScript.Shell") 
Set objWord = CreateObject("Word.Application") 

if objWord.CapsLock <> 0 then 
    ' turn capslock off 
    objShell.SendKeys "{capslock}" 
end if 
objWord.Quit 

把一切都在一个批处理文件中,我们生成一个临时.vbs文件,执行和删除它,以确保CAPS关闭。

set BAT_HOME=%~dp0 
echo %BAT_HOME% 
cd %BAT_HOME% 
echo Set objShell = CreateObject("WScript.Shell") > temp.vbs 
echo Set objWord = CreateObject("Word.Application") >> temp.vbs 
echo if objWord.CapsLock ^<^> 0 then >> temp.vbs 
echo objShell.SendKeys "{capslock}" >> temp.vbs 
echo end if >> temp.vbs 
echo objWord.Quit >> temp.vbs 
cscript //nologo temp.vbs 
del temp.vbs 
echo ... do your thing in the batch file 
+0

我无法让你的VBscript工作。它应该嵌入到我的批处理中,以便不会有两个文件(* .VBS和my * .bat)。你能否写出整个程序(批处理 - > VBs - >批处理)?我得到的错误是“<”此刻出乎意料。 – 2012-08-09 22:39:23

+0

@ user1573858,看我的编辑。 – RealHowTo 2012-08-10 00:37:55

+0

非常感谢您的时间。你的脚本工作得很好。周末愉快 ! – 2012-08-13 03:00:55