vbs如何隐藏正在运行的a.exe程序的窗口?

vbs如何隐藏正在运行的a.exe程序的窗口?,第1张

有几种方法可以用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&exit

set 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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12157582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存