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

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1284
  • Репутация:126

    [+] [-]
LauncherPB
Скачать

Скриншоты

Последнее обновление:
Добавлено действие по правой кнопки мыши на кнопке, в ini-файл добавляется параметр url=ссылка. Если указана ссылка, то открывает её, иначе открывает исполняемый файл (exe=) в проводнике. Можно указать файл из текущей папки, из системных или прямой путь (C:\...). Раскрытие переменных тут не работает.
Исправление подсказки, не смешивается мультяшная балон с квадратной.
LargeIcon перенесён в глобальные настройки, LargeIcon2 - для кнопок с координатами.

параметры

Параметры ini-файла
[gui]
Title=Launcher - Заголовок окна
icon=launcher.ico - иконка окна
FormX=10 - x-координата окна, если не указаны обе координаты, то по центру
FormY=10 - y-координата окна, если не указаны обе координаты, то по центру
FormWidth=430 - Ширина окна
FormHeight=310 - Высота окна
FormStyle=2156396544 - стиль окна, обычно заголовка. 13107200 - без кнопки "Свернуть", 13107204 - узкий заголовок - панель инструментов, 2156396544 - без заголовка
Picture = Launcher.bmp - картинка
GuiBkColor=3F3F3F - Цвет фона если картинка не найдена
AreaX=90 - x-координата заданной области для кнопок
AreaY=70 - y-координата области
AreaWidth=320 - ширина области
AreaHeight=220 - высота области
Margin=5 - промежутки между кнопок
Columns=2 - число колонок, вертикальных рядов
FontName=Consolas - название шрифта
FontSize=14 - размер шрифта
FontStyle=256 - стиль шрифта
BtnAlign=256 - Выравнивание текста на кнопке (по умолчанию по центру, 256 - слева, 512 - справа, 8192 - многостроковый, 1 - выбранная). Для многострокового тильда "~" используется в качестве переноса строки и заменяется на CRLF.
BtnMinW= - минимальная ширина кнопки
BtnMinH= - минимальная высота кнопки
BtnColor= - пока не используется (цвет кнопки)
Wow64=1 - отключает перенаправление в SysWOW64 для 32-битной программы на ОС x64
Esc=1 - добавляет хоткей Esc для закрытия программы.
TipStyle=1 - задаёт стиль всплывающей подсказки. Может быть суммой флагов 1, 2, 64, где 1 - включает заголовок и иконку, 2 - показывает exe и arg, 64 - мультяшный вид подсказки.
TipWidth=220 - ширина всплывающей подсказки.
TipTime=15 - время отображения всплывающей подсказки.
CRLF=~ - символ переноса используемый в параметрах warntext, hint, в названии кнопки при включенном флаге "многострочный текст". Например "warntext=текст~подсказки" будет 2 строки.
LargeIcon = 1 - Размер иконки, если 1 то 32, если 0, то 16
LargeIcon2 = 1 - Размер иконки для кнопок с координатами
Если данные области Area не указаны, то по умолчанию вся площадь окна.
Если FormX и FormY не указана или оба равны 0, то применяется центрирование окна.
Если не задан Picture, то применяется GuiBkColor, если и он не указан, то стандартное серое окно.
Если FontName не указан, то никакие настройки шрифта не применяются.
Если указан минимальный размер кнопки (чтобы вместился текст) и размер кнопок вычислен меньше минимального, то область Area или окно будет увеличено, а кнопки создаются с минимальным указанным размером.
Кнопки
[6] - название секции не имеет значения, главное чтобы не повторялись
name=Calc - Название программы - отображается на кнопке
hint=Run Calc - Подсказка при наведении мыши
exe=calc.exe - Исполняемый файл, полный путь или относительный
arg=\k - аргументы/параметры для исполняемого файла
hotkey=Alt + q - Горячая клавиша. Если использована, то добавиться в контекстное меню, вызываемое правым кликом мыши.
url=https://... - если указана ссылка, то открывает её, иначе открывает исполняемый файл (exe=) в проводнике. Можно указать файл из текущей папки или прямой путь (C:\...)..
icon=calc.exe - иконка, полный путь или относительный
Admin = 1 - Запускает программу от админа
exit = 1 - Закрывает лаунчер после нажатия кнопки, запуская перед этим программу
hide = 1 - Скрывает процесс, полезно для запуска консольных программ
warn=1 - Показать сообщение с требованием подтверждения операции, если кнопка опасна (перезагрузка и т.д.)
warntext=моя подсказка - при использовании warn задаёт свой текст диалога предупреждения перед запуском. При этом указать warn=2
[7]
name=Выход
exe=Exit - особый случай, если Exit, то закрывает окно ничего не запуская
[8]
bhide=1 - создаёт пустое пространство по размеру кнопки, чтобы визуально разделить кнопки между собой.
Ком-строка
Можно передать программе ini-файл, чтобы открыть копию программы с другим конфигурационным файлом. Указывается имя файла или относительный путь, относительно текущей папки программы.
Различные сборки/компиляции
Launcher.exe - поддерживает только *.bmp-файлы в качестве фона и имеет минимальный размер исполняемого файла. Этот вариант идеален без использования фона.
Launcher-OWNER.exe - Поддерживает цвет кнопок (цвет фона, каймы, шрифта).
LauncherXYWH-UDLR_Uni.exe - поддерживает координаты кнопки, например xywh=5,5,155,40. Позволяет сделать отдельные кнопки, например как кнопки переключения вкладок, при этом загружая иной конфиг. Также можно сделать кнопки с указанием автора сборника или информационная кнопка, указывающая как пользоваться сборником. Аббревиатура UDLR означает выбор кнопок стрелками клавиатуры и Enter. Uni - означает поддержка jpg, gif, png, tga в качестве фона
Стиль шрифта FontStyle поддерживает флаги:
256 - жирный
512 - курсив
4 - подчёркнутый
8 - перечёркнутый
16 - наилучшее качество
просто суммировать флаги, например 264 (256+8) включит соответствующее.
Автовычисление
Можно указать только минимальный размер кнопок и число колонок, при этом размер окна вычисляется автоматически, чтобы кнопки уместились.
BtnMinW = 200
BtnMinH = 44
Columns = 2
Важно учесть, что задавая область кнопок "Area", её размер условный, например при вычислении 10 кнопок на высоте области 335 получим высоту кнопки 33,5 пиксел, но так как пиксел не делится на десятые доли, то размер кнопки будет 33 пиксел, умножаем на 10 кнопок и получаем область кнопок 330, а не 335, конечно с учётом отступом, но они опущены, чтобы показать пример того, что размер области кнопок не будет соответствовать действительности, поэтому когда отступ под кнопками или справа от кнопок не соответствует действительности и выглядит несимметрично, то учитывайте эту погрешность и самостоятельно определяйте правильный размер окна и области кнопок. Если у вас 20 кнопок по высоте и изменение размера кнопки на 1 пиксел провоцирует изменение области кнопок на 20 пикселов Вычислить самостоятельно область кнопок так: высоту кнопки (28) прибавить отступ (2), умножить на число кнопок (20) и прибавить ещё отступ (2) получим высоту области 602, т.е. (28 + 2) * 20 + 2 = 602. Можно было бы делать округление и получить 33 пиксел, потом 37 пиксел вместо 36, но тогда кнопки бы скакали по размерам и по отступам в пределах пиксела и если отступ то 2, то 3 пиксела, это будет выглядеть неприглядно.
Поиск
Используйте Ctrl+F или пункт меню, чтобы быстро найти кнопку по тексту, кнопка будет подсвечена и активирована, достаточно нажать Enter. Вводить достаточно часть слова и даже одну букву, текст проверяется что он есть в названии кнопки без учёта регистра. Если найдено 2 и более кнопок, то выводится сообщения о найденных кнопках и можно указать более точный запрос, при этом первая найденная станет активной. Если ничего не найдено, то сбрасывается активность какой либо кнопки.
Прочее
Если нажать F1 (не удерживая), и после этого кликнуть любую кнопку, то вместо запуска появится диалоговое окно с отображением данных для этой кнопки, которые указываются в ini-файле. Таким образом понятно, что будет запущено, возможно будет важно посмотреть ключи запуска и т.д.
Переменная %%P в параметрах "exe", "arg" заменяется на x86 или x64 взависимости от того на какой ОС запущен лаунчер. Это позволяет запускать exe-файлы взависимости от битности ОС. Определяется по наличию папка SysWow64. А также передаёт переменную окружения %P%. Для примеры можно из лаунчера запустить bat-файл с таким содержанием:
echo %P%
pause


Последний раз редактировалось: AZJIO (2022-02-22 20:44), всего редактировалось 27 раз(а)

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

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
91703Поможет icofx icofx
aa Приветствую, спасибо, поюзаю.
Добавлено через 8 минут 18 секунд:
91700 но по конфигу 291 это должно быть 291 иконок. Индекс это порядковый номер отсчет от 0. А если номер ресурса то указывается минус - 291, а может наоборот.
aa Понял, спасибо. Через -минус прокатывает. az

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

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1284
  • Репутация:126

    [+] [-]
rezorustavi, делаешь такой файл icons_modify_script.txt
[FILENAMES]
Exe=icons.dll
SaveAs=icons.dll
Log=icons.log
[COMMANDS]
-addoverwrite 1.ico, iconGroup,1,
-addoverwrite 2.ico, iconGroup,2,
-addoverwrite 3.ico, iconGroup,3,
-addoverwrite 4.ico, iconGroup,4,
батник
REM @echo off
color 3b
echo.
"%~dp0ResHacker.exe" -script icons_modify_script.txt
pause
Строки иконок дублируешь сколько необходимо, это будет типа папка проекта. В ней правишь иконки, а потом одним кликом типа компилируешь.
91703Поможет icofx icofx
последняя бесплатная тут
а другие комбайны: ArtIcons и IconWorkshop. Последний может прямо в dll иконку править.
wadimus, добавил битность BitsHide = 32 или BitsHide = 64
Если у кнопки есть флаг BitsHide = 64, то на запущенной ОС-32, кнопка BitsHide = 64 будет скрыта. Если на ОС-64 запущен лаунчер с кнопкой BitsHide = 32, то будет скрыта. Если BitsHide любое иное значение, то есть не будет равен ни 32 ни 64, то отображаться будет всегда.
Почему я сделал инвертированным способом? Потому что этот способ имеет 2 значения, а если делать Bits=64, то есть кнопка будет отображаться на ОС-64, то как прописать кнопку которая будет на обоих ОС? Надо было бы внутри кода городить огород.
Ешё обновление. Если вдруг окно по высоте больше чем разрешение экрана по высоте, то окно подстроится под высоту текущего экрана. Это поведение можно отключить флагом TestSize=0. Функция надёжная, с двойной проверкой рабочего пространства (без панели задач). Для теста просто задайте рабочую область кнопок больше размера вашего экрана, например AreaHeight=4000

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

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
91710rezorustavi, делаешь такой файл icons_modify_script.txt
aa Благодарю, дорогой друг, поюзаю.

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

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1284
  • Репутация:126

    [+] [-]
rezorustavi, в идеале для извлечения пару сотен иконок из exe-файлов может подойти к этому программно?
Вот команда экспорта иконки
"%~dp0ResourceHacker.exe" -open ResourceHacker.exe -save icons.ico -action extract -mask ICONGROUP,MAINICON, -log CON
"%~dp0ResourceHacker.exe" -open Launcher.exe -save icons.ico -action extract -mask ICONGROUP,99, -log CON
Остаётся написать батник, чтобы просканировал папку по маске *.exe и выполнил с ними команду ResHacker.
Обновил ком строку, в новой версии по другому. Название иконки требует, это плохо.

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

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
91718Название иконки требует, это плохо.
aa Не вижу ничего плохого, по другому как поймет, какую именно отображать иконку. Что прописал, ту и отобразит.

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

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1284
  • Репутация:126

    [+] [-]
rezorustavi, имя нужно чтобы извлечь, а без него никак. Ничего не надо делать, завтра я сделаю версию лаунчера, который сохранит те иконки, которые показывает в файлы.

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

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
91727завтра я сделаю версию лаунчера, который сохранит те иконки, которые показывает в файлы.
aa Супер, только пожалуйста и LauncherXYWH-UDLR_Uni. Я начал пользоваться и буду пользоваться универсальным вариантом. Для гибкость важнее веса. ar

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

    Valerkan
  • 14556
  • Стаж: 7 лет 7 месяцев
  • Сообщений: 83
  • Репутация:7

    [+] [-]
91728 aa Супер, только пожалуйста и LauncherXYWH-UDLR_Uni. Я начал пользоваться и буду пользоваться универсальным вариантом. Для гибкость важнее веса. ar
aa А можно еще пожалуйста и LauncherXYWH-UDLR_Uni_x64? ah

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

    sergeysvirid
  • 104
  • Стаж: 9 лет 4 месяца
  • Сообщений: 2499
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
Valerkan,
aa
LauncherXYWH-UDLR_Uni_x86-x64

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

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1284
  • Репутация:126

    [+] [-]
rezorustavi, на AutoIt3 сделал экспорт иконок, скачать. Положи в папку своего сборника, он создаст папку icons и в неё скопирует нулевую иконку каждого exe-файла, когда откроется папка icons, значит готово.
Вариант, который я хотел ранее только в png сохраняет, пришлось AutoIt3 задействовать с готовой функцией.

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

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
AZJIO, а можно сделать, чтобы еще из dll экспортировало, и не только нулевую а все иконки?
Экспериментировал с экспортом через скрипт ResHacker - по одной иконке вытаскивает, а все иконки ни разу не работает
PS Если работисто - то не надо, по одной вытащу

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

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1284
  • Репутация:126

    [+] [-]
korsak7, сделать можно, но ResHacker вытаскивает все иконки сразу. Как через меню в программе, так и через батник. Там извлекается rc и файлы иконок.
Пункт "Операции - Сохранить группу в RC-файл"
или ком-строка
"%~dp0ResourceHacker.exe" -open Launcher.exe -save savedicons.rc -action extract -mask ICONGROUP,, -log rh.log

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

    rezorustavi
  • 2337
  • Стаж: 8 лет 3 месяца
  • Сообщений: 928
  • Репутация:55

    [+] [-]
  • Откуда: Грузия, город Рустави
91736на AutoIt3 сделал экспорт иконок
aa Супер! Огромное Вам спасибо. ay

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

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
или ком-строка
"%~dp0ResourceHacker.exe" -open Launcher.exe -save savedicons.rc -action extract -mask ICONGROUP,, -log rh.log
вот как раз в таком виде она и не работает - зря чтоль я всё утро экспериментирую ak
одну иконку с явным указанием :
ICONGROUP,33,
выводит, а все иконки - нет
ps сделал через сценарий с номерным списком иконок

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

    AZJIO
  • 17953
  • Стаж: 6 лет 1 месяц
  • Сообщений: 1284
  • Репутация:126

    [+] [-]
korsak7, надо учесть все нюансы, например при экспорте одной иконки -save icons.ico, а при экспорте многих -save savedicons.rc. Явно какая нибудь мелочь мешает, вплоть до имени файла ResourceHacker.exe и последней версии. У меня 5.18 билд 360. В батнике он пишет причину по которой не извлёк, нет exe-файла, нет указанного ресурса и т.д. Я тоже проверял, и код давал как есть.
Вот у меня в чистом виде всё работает. Надо чтобы ResourceHacker.exe, Launcher.exe и батник в одной папке и кликаю в папке батник. Если через редактор по F5, то скорее всего будет проблема путей, Launcher.exe потребует полный путь и кавычки если пробелы есть.
REM @echo off
color 3b
echo.
"%~dp0ResourceHacker.exe" -open Launcher.exe -save savedicons.rc -action extract -mask ICONGROUP,, -log rh.log
pause

-Презалил (смотреть Launcher2.exe). Почти ура. Сделал рамку активной кнопки используя WinAPI, результат 84 кб, на 7 кб увеличился, при том это вариант с поддержкой координат для кнопки, но с отключенными модулями фона, так как фон пока не поддерживается, так как стирание рамки у предыдущей кнопки происходит методом закрашивания системным фоном, и при использовании картинки там серая рамка получается. А способ затирания прозрачным цветом пока не сделал. На офсайте задал вопрос и там показана проблема, либо помогут, либо позже сам решу.
И ещё проблема, пока нельзя задавать кнопки с координатами больше по размеру чем автозаполняемые, так как невидимый слой откуда берутся линии задаётся на основе автозаполняемых кнопок, иначе надо делать слой больше размером с запасом, а может он уже занимает память на весь размер окна и я зря его экономлю.

Страница 21 из 32


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

Текущее время: 25-Апр 02:48

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


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