有几种方法可以用vbs隐藏正在运行的a.exe程序的窗口。其中一种方法是使用CreateObject函数和Wscript.Shell对象来运行a.exe,并将第二个参数设置为0,表示隐藏窗口。例如:
CreateObject("Wscript.Shell").Run "a.exe",0,True
另一种方法是使用SendKeys函数和Alt+Space组合键来最小化a.exe的窗口。例如:
Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "a.exe" WScript.Sleep 100 WshShell.SendKeys "% n"
CreateObject函数是用来创建一个对象的,比如Wscript.Shell对象。Wscript.Shell对象可以用来执行命令行程序或脚本。Run方法是Wscript.Shell对象的一个方法,它可以用来运行一个程序或脚本,并指定窗口样式和是否等待程序结束。Run方法的语法是:
object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])
其中,object是一个Wscript.Shell对象,strCommand是要运行的程序或脚本的名称,intWindowStyle是一个可选参数,表示窗口样式,bWaitOnReturn也是一个可选参数,表示是否等待程序结束后再继续执行脚本。
intWindowStyle参数可以取以下值:
0:隐藏窗口
1:正常窗口
2:最小化窗口
3:最大化窗口
…
bWaitOnReturn参数可以取以下值:
True:等待程序结束后再继续执行脚本
False:不等待程序结束就继续执行脚本
所以,如果你想用vbs隐藏正在运行的a.exe程序的窗口,并且等待它结束后再继续执行脚本,你可以使用这样的代码:
CreateObject("Wscript.Shell").Run "a.exe",0,True
如果你不想等待它结束,你可以使用这样的代码:
CreateObject("Wscript.Shell").Run "a.exe",0,False
SendKeys函数是用来模拟键盘输入的。你可以用它来发送一些组合键或快捷键来控制窗口。例如:
Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.SendKeys "% n"
这段代码就是发送Alt+Space+N组合键,表示最小化当前活动窗口。
所以,如果你想用vbs最小化正在运行的a.exe程序的窗口,并且不等待它结束后再继续执行脚本,你可以使用这样的代码:
Set WshShell = WScript.CreateObject("WScript.Shell") WshShell.Run "a.exe" WScript.Sleep 100 WshShell.SendKeys "% n"
注意,在运行a.exe之后要加上一段延时(比如100毫秒),以确保a.exe已经启动并成为当前活动窗口。
希望对你有帮助。
以下图让电脑立刻进入睡眠的脚本为例,演示如何静默执行该脚本;.bat批处理文件怎么隐藏无窗口静默运行执行
首先,“win+r”组合键打开“运行”窗口,输入“osk”可打开屏幕键盘,题外话;
bat批处理文件怎么隐藏无窗口静默运行执行
在运行窗口中输入“notepad”回车,可以快速打开记事本程序;
bat批处理文件怎么隐藏无窗口静默运行执行
然后,如图在记事本中粘贴或输入“createobject("wscript.shell").run "C:\Users\chaoy\Desktop\SleepPc.bat",0”,其中的 "C:\Users\chaoy\Desktop\SleepPc.bat"更换为自己的脚本所在绝对路径及文件名;
bat批处理文件怎么隐藏无窗口静默运行执行
接着,将文件另存为自定义名称的“.vbs”后缀文件即可,如图;
bat批处理文件怎么隐藏无窗口静默运行执行
保存后可选中该文件,右键“编辑”以查看是否有错误,检查无误后关闭;
bat批处理文件怎么隐藏无窗口静默运行执行
这样,再要执行原来的批处理文件时,只需运行这个vbs文件。当然,如果用到任务计划程序,也要相应地改为运行该vbs文件,即可实现静默执行原bat批处理文件的目的。
bat批处理文件怎么隐藏无窗口静默运行执行
' 2>nul &cls&pushd "d:\"&dir/b/a-d "d:\"|cscript -nologo -e:vbscript "%~0"&pause&exitset fso=createobject("scripting.filesystemobject")
n=2 '2个月以前的文件
set ws=wsh.stdin
do
f=ws.readline
d=datevalue(fso.getfile(f).datecreated)
if d<=datevalue(dateadd("m",-n,now)) then
fso.deletefile f
wsh.echo f,"已被删除!"
end if
loop until ws.atendofstream
借用我这篇帖子的代码https://zhidao.baidu.com/question/756767715535305244
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)