
有几种方法可以用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已经启动并成为当前活动窗口。
希望对你有帮助。
A.彻底隐藏所有上图中已运行程序的小图标【1】打开运行对话框:输入gpedit.msc命令,
然后确定。
【2】d出组策略窗口,依次选择“用户配置”--->>“管理模板”--->>“任务栏和[开
始]菜单”,然后在右边框中找到“隐藏通知区域”,双击选择已启用,然后重新启
动机器即可!!
注意:此中方法是全部隐藏任务栏图标,而且使用此方法后点击“开始”--->>“设置”--->>“任务栏和开始菜单”--->>在“任务栏”标签下的“通知区域”对话框中,“扒兄迟自定义”“隐藏不活动的图标”不能用的哦。
想恢复的设置时,只需还将组策略窗口中的“用户配置”--->>“管理模板”--->>“任务栏和[开始]菜单”的“隐藏通知区域”还原即可;
B.临时尘正隐藏部分任务栏中已运行程序的小图标
开始”--->>“设置”--->>“任务栏和开始菜单”--->>在“任务栏”标签下的“通知区域”春李对话框,到达任务栏和开始菜单属性窗口(另一种方法:右击--->>“属性”即可),然后点击“自定义”即可对任务栏中图标进行设置.
@echo off
if "%1"=="h" goto begin
start 弯芹氏mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h"埋散,0)(window.close)&&exit
:begin
这里写命令
方法一:
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
::以下为正常批处理命令,不可含有pause set/p等交互命令
如果双击一个批处理,等价于参数为空,而一些应用程序需要参数,比如在cmd窗口输入shutdowm -s -t 0,其中-s -t 0就为参数。shutdown为%0,-s为%1,-t为%2,以此类推。
第一行我们先跳过,看第二行,表示利用mshta创建一个vbs程序,内容为:createobject("wscript.shell").run(……).如果运行的批处理名为a.bat,在C:\下,那%0代表C:\a.bat,%~nx0代表a.bat。h极为参数%1,0表示隐藏运行。由于你双击运行,故第一次批处理%1为空,if不成立,转而运行下一句。然后再次打开自己,并传递参数h,此时if成立,跳转至begin开始运行。
这两行很经典,可以使批处理无窗口运行。
方法二:(这个不会生成临时文件(兼容空格路径的):
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
:begin
rem 下边开始写批处代码了
方法三:
将下面任何一句话加在@echo off下面都可以起到隐藏执行的效果,(code标签后就是要隐藏执行的任务)
两句代码的思路相同,实现手段不同.请细细体味:
if "%1"=="h" (goto code) else (mshta vbscript:createobject^("wscript.shell"^).run^("%~fs0 h",0^)^(window.close^)&exit)
if exist #hide.vbs (del #hide.vbs &goto code) else (echo createobject^("wscript.shell"^).run "%~fs0",0 >#hide.vbs&start
#hide.vbs&exit)
这段代码不会闪提示符出来
@echo off
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
rem 下边开始写批处代码了
方法四:
@echo off
start /min 1.bat
将上面的代码保存为: 2.bat
之后将你的批处理文件保存为 1.bat,运行之前先打开2.bat,则1.bat就最小化运行了.
(1)通过批处理命令实现。缺点:会看到一个窗口一闪而逝首拦。优点:简单,直接添加即可。
@echo off
if "%1"=="h" goto begin
start mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin
::以下为正常批处理命令,不可含有pause set/p等交互命令
pause
(2)利用vbs脚本实现隐藏。缺点:调用麻烦点。优点:基本看不到痕迹(非绝对的,指一般用户)
HideRun.vbs
CreateObject("WScript.Shell").Run "cmd /c D:/test.bat",0
其中D:/test.bat是你的批处理路径
.....................................................................................................................................
另一思路为把bat转换成vbs,然后vbs生成一个临时bat文件,然后WScript.Shell.Run隐藏启动这个临时bat。
HideRun.bat
echo CreateObject("WScript.Shell").Run "cmd /c D:/test.bat",0>$tmp.vbs
cscript.exe /e:vbscript $tmp.vbs
del $tmp.vbs
这个批处理其实不能使其批处理本身隐藏,但是下面大部分隐藏调用批处理的原理和基础。
HideRun.js
new ActiveXObject('WScript.Shell').Run('cmd /c D:/Test.bat',0)
用JavaScript有什么好处呢?js的字符串变量可以用单引号,从而方便命令行作为参数调用,而且js很好的支持多行语句用 分隔写成一行。要注意的是:js要区分大小写,方法
必须用括号,结尾必须有分号。所以就成了下面的命令:
mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /c D:/test.bat',0)window.close()"
通常系统管理员会向用户端推送一些脚本并运行,或者拷贝批处理文件到客户端由用户自己运行。但是大部分脚本在运行时会d出黑色背景的DOS窗口,这会让不少用户不知所
措,甚至误 *** 作关闭正在运行的窗口。好在批处理文件的DOS窗口是可以隐藏的,以下是几种隐藏批处理运行窗口的方法。
1.基础
HideRun.vbs
CreateObject("WScript.Shell").Run "cmd /c D:/test.bat",0
其中D:/test.bat是你的批处理路径
另一思路为把bat转换成vbs,然后vbs生成一个临时bat文件,然后WScript.Shell.Run隐藏启动这个临时bat。
HideRun.bat
echo CreateObject("WScript.Shell").Run "cmd /c D:/test.bat",0>$tmp.vbs
cscript.exe /e:vbscript $tmp.vbs
del $tmp.vbs
这个批处理其实不能使其批处理本身隐藏,但是下面大部分隐藏调用批处理的原理和基础。
HideRun.js
new ActiveXObject('WScript.Shell').Run('cmd /c D:/Test.bat',0)
用Javascript有什么好处呢?js的字符串变量可以用单引号,从而方便命令行作为参数调用,而且js很好的支持多行语句用 分隔写成一行。要注意的是:js要区分大小写,方法
必须用括号,结尾必须有分号。所以就成了下面的命令:
mshta "javascript:new ActiveXObject('WScript.Shell').Run('cmd /c D:/test.bat',0)window.close()"
2.用快捷方式
如果要使一个批处理本身隐藏,可以参考附件里的一个快捷方式,修改附件中的相关路径即可隐藏启动你的批处理。可以用vbs来建立一个 .lnk,其实用批处理也行(先echo一个
vbs出来)
3.利用系统服务
可以建立一个系统服务然后启动这个服务来启动批处理。缺点是启动服务较慢,需要管理员权限
runassrv add /cmdline:"C:/Windows/System32/cmd.exe /c D:/test.bat" /name:"mysrv"
net start mysrv
4.利用at计划任务
用at可以建立一个计划任务,在不输入 /interactive 参数可以后台运行。但是建使用at必须有管理员权限
at 09:10 "cmd /c D:/Test.bat"
然后在 9:10 系统就会自动后台以SYSTEM权限运行这个bat
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)