Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Alex S

Пользователь


Сообщения: 69
Благодарности: 0

Профиль | Отправить PM | Цитировать


Приветствую всех кто в теме... Снова я со своими проблемами.
Пытаюсь вызвать стандартное окно выбора цвета из библиотеки Windows.
Набросал немного кода, часть моего, часть чужого, но результат печальный...
В общем нужна помощь, уже третий день жую этот код и десятки способов, всё никак не дойду к цели.

Код:
# На базе этого: https://stackoverflow.com/questions/...ibrary-in-nsis
#
Name "SelectColor"
OutFile "SelectColor.exe"
;--------------------------------
!include "nsDialogs.nsh"
!include "System.nsh"
!include "LogicLib.nsh"

; Pages
Page custom CustPage_Create
;--------------------------------
var SelColor_Btn
var CustPage
var SelColor
; dialog create function ;
Function CustPage_Create

; === (type: Dialog) === ;
nsDialogs::Create 1018
Pop $CustPage
${If} $CustPage == error
Abort
${EndIf}
; === SelColor_Button (type: Button) ===
${NSD_CreateButton} 30u 30u 90u 13u "Выбрать цвет"
Pop $SelColor_Btn
${NSD_OnClick} $SelColor_Btn "SelectColor"
nsDialogs::Show
FunctionEnd

Function SelectColor
System::Call 'KERNEL32::LoadLibrary(t "$SYSDIR\comdlg32.dll")p.r8 ?e'
Pop $7 ; Get r9 result
${IfThen} $8 P= 0 ${|} MessageBox MB_ICONSTOP "Не удалось загрузить $SYSDIR\comdlg32.dll, ошибка $7" ${|}
${If} $8 P<> 0
System::Call 'KERNEL32::GetProcAddress(pr8, m "ChooseColorA")p.r9 ?e'
Pop $7 ; Get ?e result
${IfThen} $9 P= 0 ${|} MessageBox MB_ICONSTOP "Не удалось найти экспортированную функцию, ошибка $7." ${|}
${EndIf}

System::Call '$SYSDIR\comdlg32::ChooseColorA(t r0) i r1'
Pop $SelColor
MessageBox MB_OK "Color Selected: $SelColor"
FunctionEnd

Section ""
SectionEnd

Отправлено: 23:11, 05-02-2025 | #2877