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

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

    [+] [-]
Извлечение иконок в папку из *.exe *.dll *.icl
IconsExt
Добавлен ресурс 11 в EXEDATA (ResHacker.exe)

код

SCRN ScrW,ScrH
calc t=%ScrH%-250 //меняем координату
ENVI ext=%Temp%\rs\ResHacker.exe -extract %ic%,%fd%\icon_%fn%\MyRes.rc,IconGroup,, // <ext> - команда извлечения
MDIR %Temp%\rs //создаём папку
PUTF -wait %Temp%\rs\ResHacker.exe,,%MyName%#11|EXEDATA //из ресурса 11 извлекаем в %Temp%\rs - ResHacker.exe
ENVI v= Перетащите файл *.exe *.dll *icl
win
_SUB win,L50T%t%W200H100,IconsExt,x,
ENVI @win.POS=::::4 //поверх всех окон
EDIT+ ,L-10T1W1H1, //просто захотел избавиться от курсора в окне (не совсем помогает)
MEMO+-| ic,L1T1W192H66,%v%,,0x208
ENVI @ic.MSG=0x0233::,,start // при перетаскивании файла выполнить start
ENVI @ic.MSG=0x0203::,,delF // при двойном клике - delF
_END
_SUB start
FILE %Temp%\rs\ResHacker.log // очищаем лог
FIND $%ic%=%v%,ENVI @ic=%v%
TEAM FDIR fd=%ic%|FEXT fx=%ic%|FNAM fn=%ic%
IFEX %fd%\icon_%fn%,FILE %fd%\icon_%fn%
FIND [$%fx%=exe | $%fx%=dll | $%fx%=icl],EXEC=%ext%!ENVI @ic=%v% //если файл с этим расширением - запускаем команду извлечения (3 строка)
READ %Temp%\rs\ResHacker.log,0,str //читаем последнюю строку лога и если ....ниже
FIND $%str%=Команды выполнены,TEAM ENVI @ic= Иконки извлечены в папку\n icon_%fn%\n\n\n Удалить папку - двойной клик|FILE %fd%\icon_%fn%\MyRes.rc|findF
_END
_SUB findF //проверяем папку на кол-во иконок
FORX %fd%\icon_%fn%\*.ico,k,0,
IFEX $%k%=0,TEAM ENVI @ic=Иконок не найденo|FILE %fd%\icon_%fn%\
IFEX $%k%>0,TEAM renF|EXEC explorer.exe %fd%\icon_%fn%\ //если больше 0, открываем папку
_END
_SUB delF
FILE %fd%\icon_%fn%\
ENVI @ic= Папка с иконками удалена\n ( icon_%fn% )
_END
_SUB renF //переименование иконок - вместо Icon_1.ico ,Icon_2.ico ... - просто 1.ico , 2.ico ...
FORX %fd%\icon_%fn%\*.ico,ff,0,TEAM SED af=0,Icon_, ,%ff%|FILE %ff%>>%af%
_END
_SUB x // при выходе удаляем папку с ResHacker.exe
FILE %Temp%\rs\
_END


Последний раз редактировалось: avalat (2022-03-27 08:08), всего редактировалось 1 раз

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

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

    [+] [-]
Недавно как то разбирался со ссылками на Youtube, наткнулся на утилитку youtube-dl.exe
Заменил на yt-dlp.exe.
Набросал гуишку.
Скорость загрузки удручила...у меня не больше 70, хотя были и вспышки
Вот код с комментариями
MDIR %Temp%\yt //создаём папку в (%Temp%\yt)
PUTF -wait %Temp%\yt\yt-dlp.exe,,%MyName%#12|EXEDATA // в эту папку распаковываем утилиту yt-dlp.exe
ENVI txt=%TEMP%\logY.txt // создаём переменную для лога (txt)
ENVI &V=
_SUB win,W330H150,Download_YT,x,
ENVI @win.POS=::::4
ITEM st,L140T80W170H30,Вставить из буфера обмена,v
ITEM st2,L140T80W170H30,Загрузить,st
ENVI @st2.visible=0
LABE -left ,L10T4W300H12,Ссылка с Youtube,,0x6D6C6A
PBAR pb,L10T52W300H20,,
EDIT| pp,L10T290W550H20,,,0x20
EDIT ed,L10T20W300H20,,,0x100,0xFF0000,
LABE -left sss,L12T84W40H25,,,0x0000FF,16
LABE -left sss2,L10T145W60H16,,,0x0000FF
LABE -left fil,L10T120W300H23,,,,8
LABE -left vr,L78T145W50H16,Осталось,,
LABE -left vr2,L132T143W50H16,,,0xFF0000,14
LABE -left sk,L200T145W55H16,Скорость,,
LABE -left sk2,L256T145W60H16,,,0xFF0000,
// ENVI @ed.MSG=0x0233::&&wp,,stf
// ENVI @edi.MSG=0x0233::&&wp,,sti
_END
_SUB v
ENVI @ed.SENDMSG=0x0302
ENVI n=%ed%
LSTR bukv=10,%ed%
FIND $%bukv%=https://yo, TEAM ENVI @st.visible=0|ENVI @st2.visible=1!TEAM ENVI @ed=|MESS=-icon Вставьте правильную ссылку //| EXIT
_END
_SUB st // нажатие "Загрузить"
envi n2=%ed% // считываем ещё раз ссылку
find $%n%<>%n2%,team ENVI @st.visible=1|ENVI @st2.visible=0|ENVI @ed=|MESS=-icon Вставьте правильную ссылку|exit // проверяем - не изменилась ли она
ENVI @win.pos=:::200 // меняем (увеличиваем) размер окна
// нужное внизу - выбрать (раскомментировать)
// эта строка для вставки в exe - она пока закомментирована
// EXEC* -hide --cmd::400:progr &V=%Temp%\yt\yt-dlp.exe -i --ignore-errors %ed% // запускаем загрузку - каждые 400 мс будут передаваться данные <&V> в подпрограмму progr
// эта строка для файла youtube-dl.exe - находится рядом
EXEC* -hide --cmd::400:progr &V=%CurDir%\yt-dlp.exe -i --ignore-errors %ed%
TEAM ENVI @win.pos=:::150|ENVI @st2.enable=1|ENVI @st2.visible=0|ENVI @st.visible=1|ENVI @ed=|ENVI @sss=|ENVI @fil=|ENVI %fil%= //после загрузки изменяем размер окна, меняем кнопки на видимые, очищаем переменные
IFEX %CurDir%\%fil%, EXEC explorer.exe %CurDir%\ // если файл существует - открываем окно с загруженным файлом
_END
_SUB progr
ENVI @st2.enable=0 // делаем неактивной кнопку "Загрузить"
ENVI &s= // создаём переменную
WRIT %txt%,$,%&V% // записываем данные из <&V> в лог <txt>
READ *fix %txt%,*r,tx // считываем построчно весь лог в переменную <tx>, нам нужна строка где встречается слово <Destination:> - после неё идет название файла
LPOS** a=Destination:,,%tx% // вычисляем позицию слова - это число <a>
CALC aa=%a%+1 // добавляем единицу
MSTR res=<%aa%->%tx% // сохраняем в переменную <res> текст до конца строки от <%aa-%> - это название файла
READ -,1,ress,%res% // считываем из переменной <res> название файла
ENVI @fil=%ress% // вставляем его в окно в @fil
READ *fix %txt%,0,&s // считываем последние строки из лога в переменную <&s>
ENVI @pp=%&s% // вставляем строки в невидимое окно редактирования @pp, выглядят они так - <[download] 55.7% of 18.58MiB at 76.35KiB/s ETA 01:50>
TEAM MSTR &p=<2>%pp%|CALC #&p=%&p% // извлекаем 2 "слово" из строки - 55.7% - это процент загрузки, делаем его целым
ENVI @sss=%&p%%% // вставляем его в окно в строку @sss
ENVI @pb=%&p% // и вставляем его в прогрессбар
MSTR &ra=<4>%pp% // извлекаем 4 "слово" - 18.58MiB - это размер файла
SED &raz=0,MiB, Mb,%&ra% // заменяем MiB на более привычное Мb
ENVI @sss2=%&raz% // вставляем в окно
MSTR &ps=<6>%pp% // извлекаем 6 "слово" - 76.35KiB/s - это скорость
SED &psk=0,MiB/s, Mb/s,%&ps% // заменяем KiB/s на KB/s
ENVI @sk2=%&psk% //вставляем в окно
MSTR &vr=<8>%pp% // извлекаем 8 "слово" - это оставшееся время
ENVI @vr2=%&vr% //вставляем
IFEX $%sss%=100%,team KILL yt-dlp.exe|ENVI @sss.visible=0//когда будет 100% - закрываем процесс youtube-dl.exe,
_END
_SUB x // при выходе закрыть процесс и удалить лог
KILL yt-dlp.exe
FILE %txt%
FILE %TEMP%\YT\ //удаление папки с yt-dlp.exe
KILL \
_END
В архиве неупакованный exe, утилита yt-dlp.exe и код
(Знаю, что таких подобных прог много, чисто как пример PECMD)


Последний раз редактировалось: avalat (2022-08-18 20:35), всего редактировалось 12 раз(а)

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

    SergeyZV
  • 528
  • Стаж: 9 лет
  • Сообщений: 1313
  • Репутация:34

    [+] [-]
avalat, youtube-dl.exe отстой. Используй yt-dlp.exe.

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

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

    [+] [-]
SergeyZV,
aa
Ага, подставил yt-dlp.exe, заработало... Только в конце два окна открывается, не успевает процесс убить сразу.
Добавлено через 28 минут 16 секунд:
Поправил, перезалил архив ( вставил yt-dlp.exe)


Последний раз редактировалось: avalat (2022-05-27 16:59), всего редактировалось 1 раз

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

    Gvint64
  • 24573
  • Стаж: 3 года 11 месяцев
  • Сообщений: 567
  • Репутация:63

    [+] [-]
avalat, SergeyZV, aa YDown


Последний раз редактировалось: Gvint64 (2022-07-07 18:42), всего редактировалось 3 раз(а)

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

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

    [+] [-]
Нашёл способ, как избавиться от этого выделения после вставки из буфера
до и после
- .
Добавил строку в код выше
--------------------
_SUB v
ENVI @ed.SENDMSG=0x0302
ENVI @ed.line=1
....
-------------------
перезалил архив

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

    Gvint64
  • 24573
  • Стаж: 3 года 11 месяцев
  • Сообщений: 567
  • Репутация:63

    [+] [-]
avalat, aa Добавил ключ:
EXEC* -hide --cmd::400:progr &V=%CurDir%\yt-dlp.exe -i --ignore-errors %ed%
Key Help:
yt-dlp.exe -h > hlp.txt
P.S. Запускал exe - выскакивают 2 чёрных экрана в конце - поэтому полез пробовать ключи - а смотрю скрипт отличается от того что в ехе - в скрипте вроде нет.


Последний раз редактировалось: Gvint64 (2022-05-30 13:27), всего редактировалось 1 раз

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

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

    [+] [-]
Gvint64, aa
Ага, понял. Давай добавим.
ay

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

    SergeyZV
  • 528
  • Стаж: 9 лет
  • Сообщений: 1313
  • Репутация:34

    [+] [-]
95337yt-dlp.exe -h > hlp.txt
А смысл?! Тогда уж и нужна возможность добавления ключей.

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

    Gvint64
  • 24573
  • Стаж: 3 года 11 месяцев
  • Сообщений: 567
  • Репутация:63

    [+] [-]
SergeyZV, А какой смысл вообще в справочных данных?

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

    SergeyZV
  • 528
  • Стаж: 9 лет
  • Сообщений: 1313
  • Репутация:34

    [+] [-]
95339А какой смысл вообще в справочных данных?
В данной проге от avalat нет ни какого смысла.

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

    Gvint64
  • 24573
  • Стаж: 3 года 11 месяцев
  • Сообщений: 567
  • Репутация:63

    [+] [-]
SergeyZV,Никто и не говорил что справку туда надо встраивать. А посмотреть какие ключи и с чем их едят кому-нибудь пригодится.

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

    dimo70
  • 17296
  • Стаж: 6 лет 4 месяца
  • Сообщений: 3990
  • Репутация:26

    [+] [-]
  • Откуда: BG
avalat, спасибо! Мастер PECMD. ay az

_________________
Подпись отключена за нарушение правил форума

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

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

    [+] [-]
Мастер PECMD - это conty9.
А я так...
Любопытства ради..

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

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

    [+] [-]
Пример мини-твикера
.
В архиве неупакованный exe и скрипт
Давно не применял, твики от sergeysvirid - те , которыми пользуюсь для себя
Как пример...
Как пример...


Последний раз редактировалось: avalat (2022-07-06 15:02), всего редактировалось 3 раз(а)

Страница 3 из 7


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

Текущее время: 19-Апр 07:39

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


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