[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 466
  • Репутация:127

    [+] [-]
mat.86
m
_SUB m,W600H140,
CHEK c1,L20T10W500H30, Перенести программы в ОЗУ после чего можно извлечь флешку (рекомендуется),,1
CHEK c2,L20T35W700H30, Запустить программы и оболочку с флешки извлечь ее будет нельзя до перезагрузки,TEAM  ENVI @tt=0|ENVI @l=|ENVI @c1.Check=0| mess     продолжить ? #YN
ITEM Button5,L500T80W80H22,Выход,KILL \
LABE l,L20T70W80H22,,,0x5A1BF2,18
ENVI n=6
TIME tt,1000, TEAM CALC n=%n%-1| ENVI @l= == %n% == | ifex $%n%=0,call a
_END
_SUB a
ENVI @tt=0
ENVI @l=
MESS          продолжить ? #YN
_END


Последний раз редактировалось: avalat (2021-03-05 20:06), всего редактировалось 1 раз

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
avalat, вместо чекбокса CHEK в данном случае правильно использовать радиокнопку RADI. Чтобы активным мог быть либо первый пункт, либо второй.

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 466
  • Репутация:127

    [+] [-]
conty9, до этого что-то не додумался, спасибо !


Последний раз редактировалось: avalat (2021-03-05 20:06), всего редактировалось 1 раз

[Цитировать]

    mat.86
  • 14134
  • Стаж: 8 лет 4 месяца
  • Сообщений: 225
  • Репутация:1

    [+] [-]
Здравствуйте, помогите создать такой сценарий - оболочку PEcmd. При запуске должна появиться оболочка с двумя пунктами, по умолчанию галочка стоит на одном, отсчитывается время, допустим 5сек, если ничего не трогать срабатывает пункт 1, но можно переставить на второй снизу кнопка ок. На кнопках надписи скопировать программы в ОЗУ(рекомендуется) и запустить с флэшки
Для чего нужно.
По умолчанию в моем windows PE программы копируются в ОЗУ и флэшку можно вынимать. Но иногда, если мало памяти или для экономии места можно было запускать программы непосредственно с флэшки.-Вырисовывается очень красиво.
Думаю вместо кнопки выход должно быть "Продолжить". Если время сбилось, ставишь чекбокс на 1 или 2 нажимаешь "Продолжить", выполняется допустим start1.cmd или start2.cmd взависимости где стоит чекбокс
Если переставляю чекбокс на пункт 2, возможно сделать чтобы время сбилось, пока вручную не выберешь пункт 1 или 2 и не нажмешь кнопку "продолжить". А если не трогаешь то запускается команда start1.cmd
Как делается чтобы
ITEM Button5,L500T80W80H22,Продолжить,CALL a
здесь сначала проверялось на каком пункте чекбокс и исходя из этого срабатывал допустим start1.cmd или start2.cmd ? Должно быть что такое TEAM ENVI @Timer1=0|ENVI ?
m
_SUB m,W600H140,
RADI c1,L20T10W500H30, Перенести программы в ОЗУ после чего можно извлечь флешку (рекомендуется),,1
RADI c2,L20T35W700H30, Запустить программы и оболочку с флешки, извлечь ее будет нельзя до перезагрузки,TEAM ENVI @tt=0|ENVI @l=|ENVI @c1.Check=0| mess продолжить ? #YN
ITEM Button5,L500T80W80H22,Продолжить,CALL a
LABE l,L20T70W80H22,,,0x5A1BF2,18
ENVI n=6
TIME tt,1000, TEAM CALC n=%n%-1| ENVI @l= == %n% == | ifex $%n%=0,call a
_END
_SUB a
ENVI @tt=0
ENVI @l=
Start.cmd|KILL \%m%
_END

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 466
  • Репутация:127

    [+] [-]
mat.86,
ошибка - запятая после слова <флешки,> - нужно без запятой
RADI c2,L20T35W700H30, Запустить программы и оболочку с флешки, извлечь ее будет нельзя до перезагрузки,TEAM ENVI @tt=0|ENVI @l=|ENVI @c1.Check=0| mess продолжить ? #YN

Добавлено через 24 минуты 13 секунд:
mat.86,

код

win
_SUB win,W520H150,
RADI c1,L20T10W500H30, Перенести программы в ОЗУ после чего можно извлечь флешку (рекомендуется),call a,1
RADI c2,L20T35W700H30, Запустить программы и оболочку с флешки - извлечь ее будет нельзя до перезагрузки,TEAM ENVI @tt=0|ENVI @l=|ENVI @c1.Check=0
ITEM Button5,L370T72W90H30,Продолжить,call b
LABE l,L20T70W80H22,,,0x5A1BF2,18,
ENVI n=6
TIME tt,1000, TEAM CALC n=%n%-1| ENVI @l= == %n% == | ifex $%n%=0,call a
_END
_SUB a
ENVI @tt=0
ENVI @l=
mess start1.cmd
_END
_SUB b
ifex $%c1.Check%=1,mess start1.cmd
ifex $%c2.Check%=1,mess start2.cmd
_END


Последний раз редактировалось: avalat (2021-03-06 14:46), всего редактировалось 4 раз(а)

[Цитировать]

    mat.86
  • 14134
  • Стаж: 8 лет 4 месяца
  • Сообщений: 225
  • Репутация:1

    [+] [-]
avalat, Вместо сообщений я подставил свое действие, все срабатывает, кнопка продолжить здесь не нужна, хотя с ней красивее. Последний штрих, как сделать чтобы выполнялось закрытие окна сразу после запуска действия. Сделал так, но выход срабатывает только после выполнения start1.cmd или start2.cmd, но если в них длинный сценарий, то окно будет висеть долго пока start1.cmd не закроется. В cmd есть команда & , как здесь можно такое реализовать?
win
_SUB win,W520H150,
RADI c1,L20T10W500H30, Перенести программы в ОЗУ после чего можно извлечь флешку (рекомендуется),call a,1
RADI c2,L20T35W700H30, Запустить программы и оболочку с флешки - извлечь ее будет нельзя до перезагрузки,TEAM ENVI @tt=0|ENVI @l=|ENVI @c1.Check=0| call b
LABE l,L20T70W80H22,,,0x5A1BF2,18,
ENVI n=6
TIME tt,1000, TEAM CALC n=%n%-1| ENVI @l= == %n% == | ifex $%n%=0,call a
_END
_SUB a
ENVI @tt=0
ENVI @l=
start1.cmd
KILL \%win%
_END
_SUB b
ENVI @tt=0
ENVI @l=
start2.cmd
KILL \%win%
_END

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 466
  • Репутация:127

    [+] [-]
mat.86,
Если уж сильно мешает, добавь две строчки
_SUB a
ENVI @win.Visible=0
ENVI @tt=0
ENVI @l=
start1.cmd
KILL \
_END
_SUB b
ENVI @win.Visible=0
ENVI @tt=0
ENVI @l=
start2.cmd
KILL \
_END

[Цитировать]

    mat.86
  • 14134
  • Стаж: 8 лет 4 месяца
  • Сообщений: 225
  • Репутация:1

    [+] [-]
avalat, все разобрался вот так сразу закрывается
_SUB a
ENVI @win.Visible=0
ENVI @tt=0
ENVI @l=
EXEC start1.cmd
KILL \
_END
_SUB b
ENVI @win.Visible=0
ENVI @tt=0
ENVI @l=
EXEC start2.cmd
KILL \
_END
Большое вам спасибо ay az
Добавлено через 15 минут 12 секунд:
А можно еще одно усовершенствование ah . Можно ли у окна убрать кнопку закрыть (красный крестик), чтоб можно было его закрыть только выбрав действие и как то сделать чтобы можно было сбросить таймер (чтобы он остановился), скажем нажав куда нибудь, чтобы например дольше принимать решение чем заложено таймером?

[Цитировать]

    Гость
  • Репутация:0

    [+] [-]
83720нужно без запятой
Если нужно, чтобы была запятая и она не интерпретировалась как разделительный символ, можно присвоить этот символ переменной (единственной командой, без TEAM) и оперировать ею:
ENVI DDD=,
win
...
RADI c2,L20T35W700H30, Запустить программы и оболочку с флешки%DDD% извлечь ее будет нельзя до перезагрузки,TEAM ENVI @tt=0|ENVI @l=|ENVI @c1.Check=0
---------------------------------------------------------------
Подпрограммы _SUB а/b не нужны. Если выбрана первая кнопка, присвоим переменной XXX=1, если вторая - XXX=2. И тогда общая подпрограмма
_SUB ab
ENVI @win.Visible=0
ENVI @tt=0
ENVI @l=
EXEC --hide start%XXX%.cmd
KILL \
_END
Ключ --hide скроет батник. Ключ --wait позволит ожидать завершение работы батника, без него ENVI @win.Visible=0 не имеет смысла, поскольку сразу после старта батника сработает KILL \ (закрыть окно).
---------------------------------------------------------------
Можно ли у окна убрать кнопку закрыть
_SUB win,W520H150,Название,MESS Выходим или выполняем действие,,,, -nosysmenu

[Цитировать]

    mat.86
  • 14134
  • Стаж: 8 лет 4 месяца
  • Сообщений: 225
  • Репутация:1

    [+] [-]
conty9, спасибо за разъяснение ,,,, -nosysmenu работает, но окно не сворачивается и не передвигается. В данном случае запятая не важна, но буду знать на будущее.
По поводу подпрограммы, при запуске windows PE, уже срабатывает общий сценарий PEcmd, скорее всего этот кусочек я попробую добавить в него, после монтирования флэшки и до запуска программ. Наверное так будет удобнее. Поэтому запуск будет не %XXX%.cmd, а скорее всего другого _SUB.
А вот возможно ли сделать чтобы таймер как то остановить? Я вот думаю если на принятие решения вдруг понадобиться больше времени. Или может добавить кнопку пауза или при нажатии на таймер срабатывала бы пауза. Но это если возможно, если нет так нет, буду обходиться

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 466
  • Репутация:127

    [+] [-]
mat.86, клик по таймеру

код

win
_SUB win,W520H150,,,,,, -discloseb
RADI c1,L20T10W500H30, Перенести программы в ОЗУ после чего можно извлечь флешку (рекомендуется),CALL a,1
RADI c2,L20T35W700H30, Запустить программы и оболочку с флешки - извлечь ее будет нельзя до перезагрузки,TEAM ENVI @tt=0|ENVI @l=|ENVI @c1.Check=0| CALL b
LABE l,L20T70W70H22,,,0x5A1BF2,18,
ENVI n=8
TIME tt,1000,TEAM CALC n=%n%-1|ENVI @l= == %n% == |IFEX $%n%=0,CALL a
ENVI @l.MSG=0x0201: ENVI @tt=0
ENVI @l.MSG=0x0204:TIME tt,1000,TEAM CALC n=%n%-1|ENVI @l= == %n% == |IFEX $%n%=0,CALL a
_END
_SUB a
TEAM ENVI @win.Visible=0|ENVI @tt=0|ENVI @l=
MESS start1.cmd
KILL \
_END
_SUB b
TEAM ENVI @win.Visible=0|ENVI @tt=0|ENVI @l=
MESS start2.cmd
KILL \
_END

[Цитировать]

    mat.86
  • 14134
  • Стаж: 8 лет 4 месяца
  • Сообщений: 225
  • Репутация:1

    [+] [-]
avalat, идеально ay , как надо и закрыть не активно и в тоже время свернуть можно и таймер приостанавливается, огромное спасибо! Пошел вставлять в свой win Pe

[Цитировать]

    mat.86
  • 14134
  • Стаж: 8 лет 4 месяца
  • Сообщений: 225
  • Репутация:1

    [+] [-]
Подскажите как сделать выход после выполнения подпрограммы?
Допустим в сценарии идет вызов подпрограммы
call programs
далее ниже сама подпрограмма
_SUB programs
TEXT Копирование программ...#0xFFFFFF L35 T690 R500 B764 $24
FILE Y:\BWIM\Users=>X:\
FILE Y:\BWIM\Programs=>X:\
_END
После _END идет возврат и выполнения основного сценария дальше, как сделать чтобы происходило сразу завершение всего сценария, а не возврат.
Пробовал писать exit, перед _END не работает
Добавлено через 2 часа 34 минуты 15 секунд:
Решилось вызовом еще одного подменю.
_SUB programs
TEXT Копирование программ...#0xFFFFFF L35 T690 R500 B764 $24
FILE Y:\BWIM\Users=>X:\
FILE Y:\BWIM\Programs=>X:\
SUB ex
_SUB ex
exit

[Цитировать]

    avalat
  • 222
  • Стаж: 9 лет 9 месяцев
  • Сообщений: 466
  • Репутация:127

    [+] [-]
mat.86, попробуй
_SUB programs
TEXT Копирование программ...#0xFFFFFF L35 T690 R500 B764 $24
FILE Y:\BWIM\Users=>X:\
FILE Y:\BWIM\Programs=>X:\
EXIT programs
_END

[Цитировать]

    mat.86
  • 14134
  • Стаж: 8 лет 4 месяца
  • Сообщений: 225
  • Репутация:1

    [+] [-]
avalat, не сработало, не выходит сразу, тоже возвращается в общий список и выполняется дальше. Добавление еще одного подменю работает, я просто оставил запись, вдруг кому еще пригодится.

Страница 6 из 27


Показать сообщения:    

Текущее время: 25-Ноя 15:04

Часовой пояс: UTC + 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы можете скачивать файлы