一种自动单击Windows窗体按钮的本机方法? (批量)

时间:2019-02-22 23:05:54

标签: windows batch-file

我有一个简单的批处理文件,可以自动执行我们经常执行的任务。 (结束所有Internet Explorer进程,打开“控制面板”>“ Internet设置”>“高级”>“重置IE”)。这是代码

@echo off
taskkill /F /IM iexplore.exe /T
timeout /t 2 /nobreak > NUL
rundll32.exe InetCpl.cpl,ResetIEtoDefaults

问题是此Windows函数引发了最终批准窗口: enter image description here

批处理文件中是否存在一种本机方式来模拟按下“重置”按钮,或者绕过该按钮并仅执行它? *没有第三方软件下载。

1 个答案:

答案 0 :(得分:1)

只需使用Windows脚本宿主中的SendKeys()来模拟键盘导航。通常,您可以发送 Tab Shift + Tab 将焦点移至不同的窗口控件,或将 Spacebar 移至切换复选框或激活按钮。或者,如果您要激活的控件已经分配了热键(通常用带下划线的一个字母标记),只需发送 Alt +下划线的任何字母即可。在打开此Internet Explorer对话框的情况下, Alt + P 将切换该复选框,而 Alt + R 将激活“重置”按钮。有关更多详细信息,请参见Microsoft's SendKeys() documentation

这是一个批处理+ JScript混合示例:

@if (@CodeSection == @Batch) @then
@echo off & setlocal
2>NUL taskkill /F /IM iexplore.exe /T
timeout /t 2 /nobreak > NUL
start "" rundll32.exe InetCpl.cpl,ResetIEtoDefaults

cscript /nologo /e:Jscript "%~f0"
goto :EOF

@end // end Batch / begin JScript hybrid code
var sh = WSH.CreateObject('Wscript.Shell');

sh.AppActivate("Reset Internet Explorer Settings");
sh.SendKeys("%p%r");

这是另一个示例,这次是从.bat脚本调用PowerShell:

@echo off & setlocal
2>NUL taskkill /F /IM iexplore.exe /T
timeout /t 2 /nobreak > NUL
start "" rundll32.exe InetCpl.cpl,ResetIEtoDefaults

powershell "$sh=new-object -COM Wscript.Shell;$sh.AppActivate('Reset Internet Explorer Settings');$sh.SendKeys('%p%r')"

当然,如果您的脚本有可能会以其他语言在Windows安装上运行,则可能需要将重置窗口的焦点放在其HWND而非标题上。不过,这是另一堂课的主题。