PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » PureBasic для Windows » LauncherPB


LauncherPB

Сообщений 1 страница 10 из 10

1

LauncherPB

Скачать: yandex

Скриншоты: 1, 2, 3, 4

https://i.imgur.com/oVmkb2n.png

Обновление
1. Добавил поиск кнопки по тексту, Ctrl+F
2. Добавил подсветку активной кнопки BS_DEFPUSHBUTTON и события BN_SETFOCUS и BN_KILLFOCUS в функции обратного вызова, чтобы переключать BS_DEFPUSHBUTTON.
3. Правая кнопка мыши при удерживании Ctrl, Shift имеет ещё 3 события: открыть в проводнике, сообщение "инфа о кнопке" и Readme.txt, если есть.

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

Отредактировано AZJIO (04.07.2022 20:20:17)

0

2

Обновил
Добавил поддержку DPI.

Оказалось если выставить 125 или 150% то кайма вокруг кнопок рассчитывается по старым координатам, несмотря что она берётся с кнопки. Пришлось получить DPI, разделить на 96, чтобы получить коэффициент масштабирования и умножать всё размеры и координаты кнопок на этот коэффициент.

Добавил флаг PicResize, который может иметь следующие значения:
0 - без масштабирования совсем, как раньше. Позволяют использовать маленькие картинки-текстуры заливкой.
1 - принудительное по DPI, если задано масштабирование больше 100%
2 - принудительное всегда
3 - если размер окна и картинки не совпадают или DPI больше 100%.

Отредактировано AZJIO (26.05.2022 03:43:56)

0

3

не поленись, найди H-Menu и сравни удобство и возможности
прога ещё с 98й исправно работает на старших версиях
не найдёшь я выложу, у меня и перевод есть к 5 версии
8 таких панелей по 2 в каждом углу
а так одна из вертикальных панелей выглядит, количество иконок достаточное, за глаза хватает и рабочий стол даром не нужен
https://forumupload.ru/uploads/0009/ae/28/416/t275595.jpg
так у меня стол выглядит, само собой, девки меняются постоянно, у меня своя прога обои менять
https://forumupload.ru/uploads/0009/ae/28/416/t245122.jpg

0

4

newJS
Launcher используют конкретные люди, пример. Причём ранее использовали AutoIt версию, и я решил переписать, чтобы сделать компактней, всё таки AutoIt минимальный размер 250 кб при старой версии и упакованном исполняемом файле, а без этого начинается от 600 кб для x32, при этом всё равно остаётся внутренняя слабая упаковка (интерпретатор х32 AutoIt3.exe размер 946 кб). А на PureBasic без модулей графики 86 кб.

Вчера обновил

0

5

Обновил.
Для Launcher-OWNER добавлен индивидуальный цвет кнопки (color=550000).
Для WindowsXP принудительно отключено перенаправление (Wow64EnableWow64FsRedirection), так как не существует (устранение сбоя).
Восстановлена последовательность диалога отсутствия ini-файла.

Смотреть 4-й скрин в шапке.

Отредактировано AZJIO (04.07.2022 20:20:57)

0

6

Как сделать, чтобы один и тот же EXE-файл компилировался и работал на всех Windows включая XP?

В общем удаляю этот код поностью, который как я понимаю делает импорт "либы" во время компиляции, а не делает её игнор после.

Код:
If OSVersion() < #PB_OS_Windows_Vista
	Import "Kernel32.lib"
    Wow64DisableWow64FsRedirection(*OldValue) ; значение *OldValue является параметром вывода, и его не следует изменять
    Wow64EnableWow64FsRedirection(bValue)	  ; bValue - 0 или 1 (0 - следует отключить виртуализацию)
	EndImport
EndIf

И удаляю все упоминания (6 шт) Wow64EnableWow64FsRedirection, так как компилятор не может скомпилировать если вызов функции есть, а самой функции нет.

И после удаления все исходники работают после компиляции, а иначе выдаёт проблему функции Wow64EnableWow64FsRedirection при запуске программы на WindowsXP.

В итоге сделал рабочий вариант

Код:
; x86_64 = 64 =>  функция Is64BitOS()

; для отключения перенаправления в папку SysWOW64 при использовании программы x86
Global IsWow64ProcessFlag, hKrnDLL, *Func
; Условия перенаправления: файл 32 бит, система 64 бит и выше чем WinXP, иначе просто отключаем перенавправление флагом Wow64=0 (принудительно)
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
	If x86_64 = 64 And OSVersion() >= #PB_OS_Windows_Vista
    	hKrnDLL = OpenLibrary(#PB_Any, "Kernel32.dll")
    	If hKrnDLL
        *Func = GetFunction(hKrnDLL, "IsWow64Process")
        If *Func
        	CallFunctionFast(*Func,GetCurrentProcess_(), @IsWow64ProcessFlag)
        	*Func = 0
        	If IsWow64ProcessFlag And SizeOf(Integer) = 4
            *Func = GetFunction(hKrnDLL, "Wow64DisableWow64FsRedirection")
        	EndIf
        EndIf
    	EndIf
	Else
	; 	для x64 перенаправление не нужно, поэтому отключаем
    Wow64 = 0
	EndIf
CompilerEndIf
; конец

; принудительно для WindowsXP отключение перенаправления, чтобы не появлялась проблема вызова функции не существующей в WindowsXP
; А также для ОС x32 и для EXE x64 указатель *Func = 0 и перенаправление тоже отключено
If OSVersion() < #PB_OS_Windows_Vista Or Not *Func
	Wow64 = 0
EndIf


; далее проверки в коде
If Wow64
	CallFunctionFast(*Func, 0)
EndIf

;тут код выполненный без перенаправления.

If Wow64
	CallFunctionFast(*Func, 1)
EndIf

; ну и завершение кода с закрытием DLL
If IsLibrary(hKrnDLL)
	CloseLibrary(hKrnDLL)
EndIf

Отредактировано AZJIO (09.07.2022 07:41:07)

0

7

AZJIO написал(а):

код поностью, который как я понимаю делает импорт "либы" во время компиляции, а не делает её игнор после.

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

0

8

Есть ещё отложенный импорт, но, к сожалению, PB его не поддерживает.

0

9

Smitis написал(а):

Есть ещё отложенный импорт, но, к сожалению, PB его не поддерживает.

Polink поддерживает значит PB тоже.

Код:
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
  Import "delayimp.lib" : EndImport
CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64
  Import "delayimp64.lib" : EndImport
CompilerElse
  CompilerError "CPU not support"
CompilerEndIf

Import "/DELAYLOAD:UxTheme.dll" : EndImport
Import "UxTheme.lib"
  SetWindowTheme(hwnd, pszSubAppName.s, pszSubIdList.s)
EndImport

SetWindowTheme(0, "", "")

http://pure-basic.narod.ru/forum_files/DelayImport.zip

0

10

Знал но забыл, что надо освобождать ресурсы - иконки, ImageList. В общем добавил освобождение. Просто добавил два поля структуры для хранения дескриптора иконки и ImageList, а при выходе прокрутил список структур в цикле, удаляя если дескриптор не равен 0.

0


Вы здесь » PureBasic - форум » PureBasic для Windows » LauncherPB