Batch file 如何最小化升高的控制台窗口?
我正在使用有效负载调用Sample.bat,我希望在调用Sample.bat时最小化窗口。在这一行:Batch file 如何最小化升高的控制台窗口?,batch-file,inno-setup,Batch File,Inno Setup,我正在使用有效负载调用Sample.bat,我希望在调用Sample.bat时最小化窗口。在这一行: @echo off if _%1_==_payload_ goto :payload :getadmin echo %~nx0: elevating self set vbs=%temp%\getadmin.vbs echo Set UAC = CreateObject^("Shell.Application"^) >> "
@echo off
if _%1_==_payload_ goto :payload
:getadmin
echo %~nx0: elevating self
set vbs=%temp%\getadmin.vbs
echo Set UAC = CreateObject^("Shell.Application"^) >> "%vbs%"
echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
"%temp%\getadmin.vbs"
del "%temp%\getadmin.vbs"
goto :eof
:payload
echo %~nx0: running payload with parameters:
echo %*
echo ---------------------------------------------------
echo ADM is launching. DO NOT CLOSE THIS WINDOW.
cd /d %2
shift
shift
sample.bat
goto :eof
exit
您使用了对象的方法,该方法使用第五个参数(vShow
)来建议最初如何显示应用程序窗口。您已使用该参数值1,其描述为(等于):
使用普通窗口打开应用程序。如果窗口最小化
或最大化,系统将其恢复到其原始大小和
位置
因此,首先,我将尝试将vShow
参数的值更改为7,其描述为(等于):
用最小化的窗口打开应用程序。活动窗口将保持活动状态
对于您的脚本,这意味着将上面的行替换为:
echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%"
↑
vShow
请注意,我还没有对此进行测试。start/min有效吗?如果使用start命令调用批处理文件,则无效。但就我而言,我是通过Payloads来称呼它的,不管怎样,你的目标是什么?我这么问是因为你可以扔掉这个脚本,启动一个升级的应用程序。直接从Inno设置。也最小化。背后的想法是直接打开高架窗最小化。我不确定这是否是你想要的。谢谢特拉玛,这个解决方案对我很有效。它在不到几分之一秒的时间内,在最大化窗口中打开一个提升窗口。然后将其最小化,直到批处理文件中有任何操作。不客气!但是,如果你描述一下你的总体目标,我们可以尝试调整一下。您在脚本中执行的操作可以用Inno设置中的本机代码替换(它具有
ShellExec
函数,其作用与脚本中的Shell.ShellExecute
方法相同)。我配置的Inno设置在C:ProgramFiles中打包和部署所有批处理文件,我已经为桌面上的批处理文件创建了图标,它执行一些操作。这就是我不希望在inno设置中配置它的原因。希望我的要求是明确的
echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 7 >> "%vbs%"