puhpol
  - Longevity: 10 years
- Posts: 891
- REPUTATION:75[+] [-]
|
Приветствую господа!  Решил себе сделать программу для установки программ с помощью PECMD. С оформлением все вроде понятно. А вот как заставить работать прогресс бар и как работает чекбокс - не втыкаю. Я честно пытался разобраться сам, но знаний не хватает.....(вообще не понимаю чего там написано) Мне бы примеров бы несколько... Вот что хочется:
. Но не понимаю как работает команда CHEK и PBAR . То есть, нарисовать то я их нарисовал, а вот как заставить выполнять нужные мне действия не понимаю. На данный момент как то так себе это все представляю:CHEK Chk1,L15T40W250H20,7-Zip 19.00,,1 IFEX Chk1 < 0,EXEC --hide --wait 7-Zip-19.00.exe И догадываюсь что IFEX Chk1 < 0,EXEC --hide --wait 7-Zip-19.00.exe должно быть подпрограммой. А CHEK Chk1,L15T40W250H20,7-Zip 19.00,,1 должно запускать эту подпрограмму?
|
avalat
  - Longevity: 10 years
- Posts: 496
- REPUTATION:127[+] [-]
|
puhpol,  попробуй так_SUB abc ifex $%Chk1.Check%=1,EXEC --hide --wait 7-Zip-19.00.exe _END PBAR пока не пробовал как.
Last edited by avalat on 2020-01-14 21:45; edited 1 time in total
|
puhpol
  - Longevity: 10 years
- Posts: 891
- REPUTATION:75[+] [-]
|
avalat, Приветствую!  Спасибо за участие.  Мне бы понять.... Допустим:Есть несколько чек боксов CHEK Chk1,L15T40W250H20,7-Zip 19.00,,1 CHEK Chk2,L15T60W250H20,SumatraPDF 3.1.2,,0 Есть кнопка СТАРТ ITEM Button2,L310T200W100H24,Установить,CALL inst, И есть подпрограмма _SUB inst IFEX Chk1 < 0,EXEC --hide --wait 7-Zip-19.00.exe IFEX Chk2 < 0,EXEC --hide --wait SumatraPDF-3.1.2.00.exe _END Я правильно саму идею понял? Не понял почему так : ifex $%Chk1.Check%=1 "※Используйте "ENVI @ ChkName.Check = Val" для установки статуса флажка," Эта хрень на кнопке "снять выбор" у меня стоит: ITEM Button1,L170T200W100H24,Снять выбор,TEAM ENVI @Chk1.Check=0|ENVI @Chk2.Check=0
|
Guest
- REPUTATION:0[+] [-]
|
Демонстрационный скриптCALL MyPBAR `Вызываем окно _SUB MyPBAR,W320H100%,Progress bar ITEM -font:14 Btt1,L10T5W210H26,Pres button to demo,CALL Press //Рисуем кнопку, если нажата - вызвать подпрограмму Press PBAR Pbar1,L10T42W210H26,0 //Указываем размер и имя прогресс-бара CHEK Chk1,L250T40W50H20,назад,CALC NEnvi=-%NEnvi%, //Рисуем чекбокс, если отмечен - тогда инвертируем %NEnvi% ENVI @Pbar1=-1 //Задаём начальное значение прогрессбара, при -1 он невидим, при значении 0...100 - видим и отображает значение ENVI NEnvi=20 //Задаём прирост _END _SUB Press IFEX $%Pbar1%>100, //Если прогрессбар переполнен (больше 100) { CALC Pbar1=-1 //Присваиваем значение -1 (невидим) ENVI @Pbar1=%Pbar1% //Чтобы значение отобразилось сразу же, необходимо привоить то же для @Pbar1 }! //Если прогрессбар не переполнен { CALC Pbar1=%Pbar1%+%NEnvi% //Добавляем прирост (зависит от значения чекбокса Chk1) ENVI @Pbar1=%Pbar1% //Обновляем значение на экране } IFEX $%Pbar1%<-1,TEAM CALC Pbar1=100|ENVI @Pbar1=%Pbar1% //Теперь проверка на отрицательные значения, если меньше -1, тогда присвоим 100 и обновим... И обходимся без скобок {}, объеденив две команды с помощью TEAM _END Примечание: ENVI @Pbar1=ХХХ //Сразу применить значение на экране. Т.е., работает так: прогрессбар на экране уже нарисован. И, если мы просто изменим значение Pbar1 на новое, на экране останется старое, нарисованное. А вот @ перед ним указывает, что нужно изменить значение Pbar1 во всех подпрограммах, включая графику. ENVI @Pbar1.enable=0 //Деактивировать прогрессбар (т.е., он будет видим, но затенён) ENVI @Pbar1.visable=0 //Скрыть прогрессбар, он станет невидим (конкретно для прогрессбара то же делает ENVI @Pbar1=-1, но visable не изменяет значение Pbar1) ENVI @Chk1.Check=1 //Установить галочку на чекбокс Chk1 IFEX $%Chk1.Check%=1,MESS Ogogo //Если отмечен чекбокс Chk1, вывести сообщение Имя.enable, Имя.visable, Имя.Check - работают для большинства экранных рюшек
|
puhpol
  - Longevity: 10 years
- Posts: 891
- REPUTATION:75[+] [-]
|
conty9, Приветствую!  Спасибо, сейчас буду разбираться..... Не фига не понял пока, ну да это нормально - я же тугодум.
|
Guest
- REPUTATION:0[+] [-]
|
А CHEK Chk1,L15T40W250H20,7-Zip 19.00,,1 должно запускать эту подпрограмму? Неверно. Для такого есть обычные кнопки (ITEM). А чекбоксы и радиокнопки предназначены для модификации парамтров запуска, хотя и можно выполнить действия при нажатии/выборе. Радиокнопки - круглые, взаимозависимы в пределах своей группы (т.е., нажав одну, мы гасим остальные). А чекбоксы - квадратные, работают независимо. На картинке: ".\", "Make bootmgr.ldr", "Edit selected theme", "Make BOOTMGR" - это обычные кнопки, "View" - неактивная кнопка, "Bootmgr 7/8.1/10" - взаимозависимые радиокнопки, "Use XPRESS pack" и "Use selected theme" - независимые чекбоксы.
|
 Отправлено: 14-Jan-2020 18:45
(after 2 hours 38 minutes)
puhpol
  - Longevity: 10 years
- Posts: 891
- REPUTATION:75[+] [-]
|
conty9, Не могу понять как мне привязать прогресбар к выполнению команд.....Что бы он показывал что программа устанавливается?CALL @Windows1 _SUB Windows1,W600H280,Установка программ,, ENVI @this.Font=12:Tahoma LABE Label,L40T10W520H20,Выбирете программы для установки ,,0xaaaaaa,16 CHEK Chk8,L300T80W250H20,XnShell,,1 PBAR PBAR1,L50T160W500H20,0 //Указываем размер и имя прогресс-бара ENVI @Pbar1=-1 //Задаём начальное значение прогрессбара, при -1 он невидим, при значении 0...100 - видим и отображает значение ENVI NEnvi=20 //Задаём прирост ITEM Button2,L170T200W100H24,Установить,CALL inst, _END _SUB inst IFEX $%Chk8.Check%=1,EXEC ="%CurDir%\XnShell\XnShellEx.exe" /VERYSILENT _END
|
Guest
- REPUTATION:0[+] [-]
|
puhpol, это вопрос на 100$. )) Чтобы прогрессбар отображал ход процесса, нужно анализировать выхлоп установки, если он вообще есть. Т.е., например, 7zip при распаковке в консоли показывает прогресс в %. Или wimlib - тоже. Если XnShellEx.exe тоже показывает, тогда нужно перехватить его сообщения, вычленить оттуда процент прогресса и передать его прогрессбару. Но, скорее всего, всё не так. Тогда останется только возможность организовать постоянно бегущую строку прогресса. Т.е., присваиваем прогрессу 0, через 300мс примерно (нужно подбирать) - 100, потом снова 0, и т.д. Т.е., наша полоска доползла до конца и снова в 0.
|
puhpol
  - Longevity: 10 years
- Posts: 891
- REPUTATION:75[+] [-]
|
conty9, Спасибо, понял. Ну его в .... этот прогрес бар.
|
puhpol
  - Longevity: 10 years
- Posts: 891
- REPUTATION:75[+] [-]
|
Приветствую господа!  Еще пара вопросов теперь по MESS и TEXT: 1. По MESS Возможен ли вывод окна без кнопок, с блокировкой основного окна при этом с продолжением работы скрипта? И как его (окно) в конце убрать? 2. По TEXT Возможно ли зациклить выполнение команды?(что бы команда выполнялась по кругу) Допустим: TEXT Подождите . TEXT Подождите .. TEXT Подождите ... TEXT Подождите .... получится типа гифки. 3. До кучи: IFEX $%Chk8.Check%=1,TEAM TEXT Установка XnShellEx .....| EXEC ="%CurDir%\XnShell\XnShellEx.exe" /VERYSILENT | TEXT Вроде должно работать? Добавлено через 2 часа 32 минуты 8 секунд: А еще : TIPS или ТEXT можно привязать к основному окну? Как заблокировать основное окно пока выполняется подпрограмма?
|
avalat
  - Longevity: 10 years
- Posts: 496
- REPUTATION:127[+] [-]
|
puhpol, По MESS можно сделать как то такcall w1 _SUB w1,W280H150, без рамки ,, ITEM a,L14T74W240H22,тыц,CALL b _END _SUB b,W200H98, 123 ,,,# HKEY z,KILL @b // гор. клавиша для закрытия окна LABE L1,L1T1W200H98,\n \n без рамки ,,#0x00FF00 #0x000000,15 TIME Timer1,5000,KILL @b _END
Last edited by avalat on 2020-01-15 22:07; edited 1 time in total
|
puhpol
  - Longevity: 10 years
- Posts: 891
- REPUTATION:75[+] [-]
|
avalat, Приветствую. Спасибо. Полезная штука, не понимаю как использовать пока...... Из за компа выгнали. (мой ноут сломался, вот и гоняют по всей квартире).
|
puhpol
  - Longevity: 10 years
- Posts: 891
- REPUTATION:75[+] [-]
|
7327073214Ну его в .... этот прогрес бар.  Можно сделать так. Например, при установке четырёх программ - пбар делим на 4 части, и полоса будет двигаться по мере установки... кодENVI pb=CALC Pbar1=%Pbar1%+%b% ENVI pb1=ENVI @Pbar1=%Pbar1% ENVI p=CALC n=%n%+1 CALL ww _sub ww,W410H270,Проба,, ITEM ss,L300T198W80H25,Старт, CALL st PBAR PBAR1,L15T160W364H20,, CHEK ch1,L15T15W70H25, проба1,, CHEK ch2,L15T40W70H25, проба2,, CHEK ch3,L15T65W70H25, проба3,, CHEK ch4,L15T90W70H25, проба4,, CHEK ch5,L15T115W70H25, проба5,, LABE -left h1,L15T198W250H50, ,,0x0000FF,16 _end _SUB st ENVI n=0 IFEX $%ch1.Check%=1,%p% IFEX $%ch2.Check%=1,%p% IFEX $%ch3.Check%=1,%p% IFEX $%ch4.Check%=1,%p% IFEX $%ch5.Check%=1,%p% CALC b=100/%n% ENVI @Pbar1=0 CALL start _END _SUB start IFEX $%ch1.Check%=1,TEAM ENVI @h1=проба1|MESS Установка |%pb%|%pb1% IFEX $%ch2.Check%=1,TEAM ENVI @h1=проба2|MESS Установка |%pb%|%pb1% IFEX $%ch3.Check%=1,TEAM ENVI @h1=проба3|MESS Установка |%pb%|%pb1% IFEX $%ch4.Check%=1,TEAM ENVI @h1=проба4|MESS Установка |%pb%|%pb1% IFEX $%ch5.Check%=1,TEAM ENVI @h1=проба5|MESS Установка |%pb%|%pb1% ENVI @h1=Выполнено _ENDПока не понял ,как определить количество выбранных чекбоксов. Сделал примитивно (подпрограмма st), но чую, можно по другому... 73273puhpol,  Попробуй подставь вместо "MESS Установка" - "EXEC=................своё" Получится или нет !? Добавлено через 2 минуты 17 секунд: avalat, Извиняюсь, но на данный момент пауза. Нужно что то с сервером делать.
|
 Отправлено: 16-Jan-2020 15:03
(after 1 hour 12 minutes)
Guest
- REPUTATION:0[+] [-]
|
К каждой программе привязать значение прогресбара, закончилось выполнение команды прогрес бар продвинулся на 1 деление, выполнение всех команд - 100% прогресбара. Тогда проблем нет. При запуске установки присваиваем начальное значение прогресса 20%, после выполнения первой ехе-шки (EXEC ="%CurDir%\XnShell\XnShellEx.exe" /VERYSILENT) назначаем 40%, после второй - 60%... после последней - 100%.
|
avalat
  - Longevity: 10 years
- Posts: 496
- REPUTATION:127[+] [-]
|
Выделить/убрать галки со всех чекбоксов. Можно ли как-то по другому ?_SUB ins forx* 1 2 3 4 5,d,envi @ch%d%.Check=1 //или 0 _end И всё же как подсчитать количество выбранных ?
|
Page 1 of 2
Current time is: 07-Feb 23:14
All times are UTC + 3
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|