WshShell.SendKeys(Chr(175))无法生效,Windows10音量上调脚本问题求助
解决Windows 10 VBS脚本音量上调按键无效的问题
我来帮你排查这个问题——你遇到的Chr(175)无法触发音量上调的情况,在Windows 10的VBS脚本里其实挺常见的,核心原因是WScript.Shell的SendKeys对媒体键的模拟逻辑在Windows 10下有兼容性问题:静音(Chr(173))和音量下调(Chr(174))的触发逻辑相对简单,系统能正常识别,但音量上调对应的Chr(175)经常会因为系统输入限制或者扫描码映射问题失效。
我给你两个靠谱的解决方案,按优先级尝试:
方案1:改用SendKeys的媒体键专用语法
直接使用{VOLUME_UP}这个按键别名替代Chr(175),这是Windows官方推荐的媒体键模拟方式,兼容性更好。同时建议加个小延迟,避免连续发送按键导致系统处理不过来:
Set wshShell = CreateObject("WScript.Shell") For i = 0 To 50 wshShell.SendKeys("{VOLUME_UP}") WScript.Sleep(50) ' 给系统留足处理时间,避免按键丢失 Next
方案2:调用Windows API底层模拟按键
如果方案1还是无效,说明系统对SendKeys的限制比较严格,可以通过直接调用user32.dll的API来模拟物理按键,这种方式更底层,几乎不会失效:
Set objShell = CreateObject("WScript.Shell") ' 调用API模拟音量上调按键 For i = 0 To 50 objShell.Run "powershell -Command ""Add-Type -TypeDefinition 'using System; using System.Runtime.InteropServices; public class Vol { [DllImport(\""user32.dll\"")] public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, UIntPtr dwExtraInfo); }'; [Vol]::keybd_event(0xAF, 0, 0, [UIntPtr]::Zero); [Vol]::keybd_event(0xAF, 0, 2, [UIntPtr]::Zero)""", 0, True WScript.Sleep(50) Next
这个脚本通过PowerShell间接调用Windows API(因为VBS本身无法直接加载DLL),0xAF是音量上调的虚拟按键码,模拟按下再松开的完整动作,确保系统能正确识别。
内容的提问来源于stack exchange,提问作者lewando54




