|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » .: NSIS - все вопросы :. часть 2. |
|
.: NSIS - все вопросы :. часть 2.
|
Ветеран Сообщения: 1216 |
Профиль | Отправить PM | Цитировать
Данная тема предназначена для обсуждения вопросов, связанных с инсталлятором Nullsoft Scriptable Install System, или просто NSIS. Сайт приложения. Описание: Текущая версия: NSIS 3.05 от 15 декабря 2019 года Скачать | Архив сборок версии Первая часть этой темы Скачать первую часть этой темы одним архивом ВНИМАНИЕ! прежде, чем задать вопрос, почитайте, где Вы найдете ответы на большинство вопросов: Справочник по NSIS - создан силами нашего сообщества. Руководство пользователя. Перевод – Поляков А.В, зеркало Документация Утилиты разработчика Расширение функциональности Примеры скриптов на нашем форуме Скрипт NSIS для перепаковки AIMP2+Сборки Тема для Notepad++(пример парсинга XML) Достоинства Ещё немного полезной информации: |
|
------- Отправлено: 12:02, 09-12-2012 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата MKN:
На худой конец, написать плагин... Цитата MKN:
Цитата MKN:
Увы, но на WinAPI нет ничего готового, нет никаких плюшек для автоматизации какого-то действия, так что для всего того, что ты описал, ты должен будешь сделать всё вручную, а именно: 1. Получить текущие координаты позиции курсора мыши 2. Получить координаты элемента с изображением 3. Вычислить, если координаты из п1 входят в диапазон координат п2, то курсор над изображением 4. Вручную, опять же, присвоить изображение 5. Обработать нажатие ПКМ на изображении тоже должен сам, если пришло такое сообщение - делаешь то, что нужно Я бы, наверное, просто закинул это дело в плаг и попробовал бы создать элемент изображения в самой dll и там же всё это обрабатывать в своей процедуре...Но это будет мягко говоря не удобно, создавать dll для одного элемента |
|||
------- Отправлено: 01:02, 16-08-2015 | #1751 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 96
|
Профиль | Отправить PM | Цитировать Кто нибудь юзал вот это
http://nsis.sourceforge.net/NullsoftDecompiler Работает? У меня на выходе получается белиберда.. |
Отправлено: 17:59, 16-08-2015 | #1752 |
Ветеран Сообщения: 2359
|
Профиль | Отправить PM | Цитировать Цитата K.A.V.:
Цитата K.A.V.:
Цитата kotkovets:
Вот мой рабочий тестово- корявый код (для одной кнопки-изображения) : !include "MUI2.nsh" Page custom nsDialogsPage !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "Russian" OutFile "click_pict.exe" Var dlg Var Click Var IMAGE Var IMAGECTL Var IMAGE2 Var IMAGECTL2 Function OnTimer System::Alloc 16 Pop $0 System::Call USER32::GetCursorPos(ir0) System::Call *$0(i.r1,i.r2) System::Free $0 System::Call USER32::WindowFromPoint(ir1,ir2)i.r1 ${If} $1 = $Click ShowWindow $IMAGECTL 1 ShowWindow $IMAGECTL2 0 System::Call USER32::LoadCursor(i,i32649)i.s System::Call USER32::SetCursor(is) ${Else} ShowWindow $IMAGECTL2 1 ShowWindow $IMAGECTL 0 ${EndIf} System::Call user32::RedrawWindow(i$Click,i0,i0,i0x0105) FunctionEnd Function nsDialogsPage nsDialogs::Create 1018 Pop $dlg nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${SS_BITMAP} 0 140u 20u 48u 32u "" Pop $IMAGECTL StrCpy $6 "$EXEDIR\a.bmp" System::Call 'user32::LoadImage(i 0, t r6, i ${IMAGE_BITMAP}, i 0, i 0, i ${LR_LOADFROMFILE}) i.s' Pop $IMAGE SendMessage $IMAGECTL ${STM_SETIMAGE} ${IMAGE_BITMAP} $IMAGE ShowWindow $IMAGECTL 0 nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${SS_BITMAP} 0 140u 20u 48u 32u "" Pop $IMAGECTL2 StrCpy $7 "$EXEDIR\b.bmp" System::Call 'user32::LoadImage(i 0, t r7, i ${IMAGE_BITMAP}, i 0, i 0, i ${LR_LOADFROMFILE}) i.s' Pop $IMAGE2 SendMessage $IMAGECTL2 ${STM_SETIMAGE} ${IMAGE_BITMAP} $IMAGE2 ShowWindow $IMAGECTL2 1 ${NSD_CreateLabel} 135u 22u 40u 20u "" Pop $Click ${NSD_OnClick} $Click OnClick ${NSD_CreateTimer} OnTimer 50 System::Call 'gdi32:DeleteObject(i $IMAGE)' System::Call 'gdi32:DeleteObject(i $IMAGE2)' nsDialogs::Show FunctionEnd Function OnClick MessageBox MB_OK "Кликнули на изображении" FunctionEnd Section SectionEnd ps Для чего это всё надо ? А чтобы в ногу со временем идти и для разнообразия . Чтобы делать страницы, оформленные в стиле Metro интерфейса. При наведении курсора - вокруг кнопки (а это - цветное изображение прямоугольника на цветном фоне) появляется рамочка, чтобы был виден выбор этой кнопки, затем клик и действие. Ладошка курсора - это приятная и полезная мелочь. Хорошо бы всё это загнать в DLL... Вполне реально и полезно... Но с dll мне не справиться... Вся надежда на вас, на гуру. |
|||
Последний раз редактировалось MKN, 27-05-2020 в 16:17. Отправлено: 19:06, 16-08-2015 | #1753 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата MKN:
Короче говоря, в твоём вопросе в пределах NSIS-кода для элемента статика - только таймер Может, конечно, найдёшь другой метод, но я не в курсе, как это ещё можно сделать Цитата MKN:
Скрытый текст
!include "MUI2.nsh" Page custom nsDialogsPage !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "Russian" OutFile "click_pict.exe" Var dlg Var Click Var IMAGE Var IMAGECTL Var IMAGE2 Var IMAGECTL2 Function OnTimer System::Alloc 16 Pop $0 System::Call USER32::GetCursorPos(ir0) System::Call *$0(i.r1,i.r2) System::Free $0 System::Call USER32::WindowFromPoint(ir1,ir2)i.r1 ${If} $1 = $IMAGECTL System::Call USER32::LoadCursor(i,i32649)i.s System::Call USER32::SetCursor(is) SendMessage $IMAGECTL ${STM_SETIMAGE} ${IMAGE_BITMAP} $IMAGE ${Else} SendMessage $IMAGECTL ${STM_SETIMAGE} ${IMAGE_BITMAP} $IMAGE2 ${EndIf} System::Call user32::RedrawWindow(i$Click,i0,i0,i0x0105) FunctionEnd Function nsDialogsPage nsDialogs::Create 1018 Pop $dlg nsDialogs::CreateControl STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS}|${SS_BITMAP} 0 140u 20u 48u 32u "" Pop $IMAGECTL StrCpy $6 "$EXEDIR\a.bmp" System::Call 'user32::LoadImage(i 0, t r6, i ${IMAGE_BITMAP}, i 0, i 0, i ${LR_LOADFROMFILE}) i.s' Pop $IMAGE SendMessage $IMAGECTL ${STM_SETIMAGE} ${IMAGE_BITMAP} $IMAGE StrCpy $7 "$EXEDIR\b.bmp" System::Call 'user32::LoadImage(i 0, t r7, i ${IMAGE_BITMAP}, i 0, i 0, i ${LR_LOADFROMFILE}) i.s' Pop $IMAGE2 ${NSD_AddStyle} $IMAGECTL ${SS_NOTIFY} ${NSD_OnClick} $IMAGECTL OnClick ${NSD_CreateTimer} OnTimer 50 nsDialogs::Show System::Call 'gdi32:DeleteObject(i $IMAGE)' System::Call 'gdi32:DeleteObject(i $IMAGE2)' FunctionEnd Function OnClick MessageBox MB_OK "Кликнули на изображении" FunctionEnd Section SectionEnd Цитата MKN:
|
|||
------- Отправлено: 22:15, 16-08-2015 | #1754 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать LOKYOXY, уберите картинки под коврик, и что это хрень?
|
------- Отправлено: 14:48, 17-08-2015 | #1755 |
Ленивый кусок мяса Сообщения: 1986
|
Профиль | Сайт | Отправить PM | Цитировать Цитата kotkovets:
Человек, видимо, написал свой интерфейс в стиле "жизньболь" (ну, мне просто основной цвет не нравится ) под NSIS, а этот пост - видимо, менеджер закачек на NSIS |
|
------- Отправлено: 17:49, 18-08-2015 | #1756 |
Ветеран Сообщения: 2359
|
Профиль | Отправить PM | Цитировать Цитата K.A.V.:
|
|
Отправлено: 18:49, 18-08-2015 | #1757 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата K.A.V.:
|
|
Отправлено: 18:51, 18-08-2015 | #1758 |
Ветеран Сообщения: 861
|
Профиль | Отправить PM | Цитировать Использую nsis3.0a2 подключил библиотеку RegistryFunc.nsh, взятую с справки.
Теперь сам вопрос: почему при вызове команды ${MoveKey} при отсутствии исходного ключа все равно создается ключ? Это глюк библы или я не правильно что-то использую? |
------- Последний раз редактировалось Dodakaedr, 19-08-2015 в 15:30. Отправлено: 15:07, 19-08-2015 | #1759 |
Ветеран Сообщения: 1216
|
Профиль | Отправить PM | Цитировать Цитата Dodakaedr:
Если нужно переместить в другой ключ, который не существует - ключ будет создан. --- Если ключ реестра, который нужно переместить, не существует, то устанавливается флаг ошибки --- Вообще библиотека заточена под NSIS 2.46 ANSI версии. |
|
------- Отправлено: 15:22, 19-08-2015 | #1760 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 2 | dimadr | Наборы обновлений для Windows XP/2003/Windows 7 | 267 | 14-02-2020 08:25 | |
[архив].: NSIS - все вопросы :. | kotkovets | Автоматическая установка приложений | 3387 | 09-12-2012 11:56 | |
Инфо - [ликбез] Помощь начинающим .:[все вопросы]:. часть 1 | jameszero | Наборы обновлений для Windows XP/2003/Windows 7 | 1491 | 22-07-2011 22:42 | |
Выбор|модернизация процессора .:[все вопросы]:. Часть I | Myxa | Выбор отдельных компонентов компьютера и конфигурации в целом | 1845 | 01-01-2011 19:18 | |
Вопросы по создателю инсталляций NSIS | MaxDELETE | Программное обеспечение Windows | 14 | 04-07-2007 10:01 |
|