2014-12-23 3 views
-1
@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 

Я звоню в Sample.bat, используя полезную нагрузку, я хочу минимизировать окно при вызове метода sample.bat.Как свести к минимуму окно консоли?

+0

Работает ли 'start/min'? – Gabe

+0

Нет, это не работает, если мы вызываем командный файл с помощью команды start. Но в моем случае я звоню через полезную нагрузку – Gikar

+0

В любом случае, какова ваша цель? Я прошу, потому что вы можете выбросить этот скрипт и запустить приложение с повышенными правами. прямо из Inno Setup. Также минимизировано. – TLama

ответ

2

На этой линии:

echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 1 >> "%vbs%" 
                   ↑ 
                   vShow 

вы использовали ShellExecute метод Shell объекта, который использует пятый параметр (vShow) дать рекомендации относительно того, как окно приложения должны отображаться на начальном этапе. Вы использовали для этого значения параметра 1, которое описывается как (равно SW_SHOWNORMAL):

Откройте приложение с обычным окном. Если окно минимизировано или максимизировано, система восстанавливает его до его первоначального размера и .

Так как впервые я хотел бы попробовать изменить значение параметра vShow до 7, которая описывается как (равно SW_SHOWMINNOACTIVE):

Открыть приложение с минимизированным окном. Активное окно остается активным.

Что для сценария означает заменить эту строку с этим:

echo UAC.ShellExecute "%~s0", "payload %~sdp0 %*", "", "runas", 7 >> "%vbs%" 

ли к сведению, что я не проверял это.

+0

Идея заключается в том, чтобы непосредственно открыть повышенное окно с минимальными значениями. Я не уверен, что это то, что вы ищете. – TLama

+0

Спасибо, TLama, решение для меня работало. Он открывает повышенное окно в максимально развернутом окне меньше секунды. Затем минимизирует его до тех пор, пока в пакетном файле не будет никакой операции. – Gikar

+0

Добро пожаловать! Но, если вы опишете свою общую цель, мы можем попытаться ее подстроить. То, что вы делаете в своем скрипте, может быть заменено собственным кодом в Inno Setup (у него есть функция «ShellExec», которая выполняет то же, что и метод «Shell.ShellExecute» в вашем скрипте). – TLama

Смежные вопросы