我需要一个批处理文件,当我运行将显示触摸输入面板(虚拟键盘)时隐藏,否则,如果已经可见,然后隐藏它。触摸输入面板的路径是:
C:\Program Files\Common Files\Microsoft shared\ink\tabtip.exe
以下是我迄今为止尝试的方法:
FOR /f "tokens=*" %%a IN ('TASKLIST ^| FINDSTR /i TabTip.exe') DO
( IF "%ErrorLevel%"=="0"
( TASKKILL /IM TabTip )
ELSE
( start "C:\Program Files\Common Files\Microsoft Shared\ink\TabTip.exe" )
)
PAUSE
字符串
2条答案
按热度按时间xe55xuns1#
这应该是可行的:
字符串
我试过用
型
以及与
型
但我总是得到一个访问拒绝(不知道为什么)。
但是,Kill()方法工作正常,您应该使用
yxyvkwin2#
PowerShell可能是现在更好的选择(参见现有的答案),但它可以通过一行代码轻松地批处理(甚至不需要
for
循环):字符串
为了获得更好的可读性和可扩展性:
型
为什么你的代码不工作:
for
语法:开始的(
必须与do
在同一行上%errorlevel%
在这里是没有意义的,因为for
循环中的命令是在一个新的独立进程中执行的,所以你不会在原始进程(你的脚本)中得到一个错误级别(也就是说,它和循环之前一样)。taskkill
,您需要/f
(强制)开关,因为TabTip是少数几个在关闭请求时不能正确退出的程序之一。start
语法错误:start
将第一个带引号的字符串作为窗口标题(可以为空),因此它应该是start "" "blahblah\app.exe"
start
命令,因为您正在启动GUI应用程序。