Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.
Не над, а внутри границ »
Имею ввиду "внешне" ;)
Если взять ранее предлагаемый пример с вводом пароля, то отследить нахождение указателя можно, добавив в Function EditNotify такой код : »
Ну, это видать только под конкретный 1 элемент на страничке я так понял? А если 2 Edit'a, твоя функция также останется актуальна? :)
Наверняка можно сделать изящнее и продвинутее, но возиться не понятно ради чего, лень, да и знаний не хватает... »
Именно поэтому я не стал выкладывать свой код, потому что конкретной цели не особо вижу (да и только набросав, выкладывать "колючий" стыдно), как я выше написал - функция всё равно будет багнутой изначально, т.к. если я введу в элемент значение будучи держа курсор рядом с элементом - провал функции, т.к. ну ты сам понял, положение курсора != а мы уже расчитали и поменяли значение у юзера, что может у него вызвать удивление и забаву, хотя можно потом сказать, что "это не баг, это фича" :biggrin:
Если юзать GDI32, как у меня сейчас в коде (тоже не знал как делать, после твоего первого сообщения с упоминанием PtInRect полез по MSDN), то там создаётся регион от размера элемента (так сказать "невидимые границы"), и потом вызов функции проверки, находятся ли указанные координаты (в нашем случае положение курсора мыши) в пределах этих "невидимых линий", вроде бы тоже работает, если мне не показалось :)
каким образом отслеживать клики нужных кнопок мыши »
Это походу только с хуками делается, вообще не в курсе
как организовать комбинированные нажатия на кнопки, совместно с выбранным символом клавиш. ( Например, на странице есть кнопка, нажав которую совместно с цифрой 1 »
В момент нажатия кнопки просто проверять статус, нажата ли указанная клавиша, тоже если покопаться по MSDN, думаю такую функцию не составит труда найти, наверное :)
Вроде как для этого можно использовать GetAsyncKeyState... Только не получается... »
Чего не получается?
Function func
nsDialogs::Create 1018
${NSD_CreateButton} 25u 27u 150u 15u "0"
pop $button
${NSD_OnClick} $button buttonclick
nsDialogs::Show
FunctionEnd
function buttonclick
System::Call "User32::GetAsyncKeyState(i0x10)i.r0"
MessageBox MB_OK|MB_ICONINFORMATION "$0"
FunctionEnd
Функция на проверку нажатия левого шифта, если зажата - отрицательное значение выдаёт, если была нажата - 1
А если 2 Edit'a, твоя функция также останется актуальна? »
Нет, этот случай только для одного Edit'a ( или другого элемента )
В момент нажатия кнопки просто проверять статус, нажата ли указанная клавиша, тоже если покопаться по MSDN, думаю такую функцию не составит труда найти »
Есть такая
; Функция GetAsyncKeyState устанавливает, в нажатом или отпущенном состоянии находится клавиша во время, когда вызывается функция
; и была ли клавиша нажата после предыдущего вызова GetAsyncKeyState().
; Функция GetAsyncKeyState работает с кнопками мыши. Однако она контролирует состояние физических, а не логических кнопок мыши,
; которыми физические кнопки отображаются.
; назначить коды :
;!define VK_LBUTTON 0x01 # Left mouse button
;!define VK_SHIFT 0x10
System::Call "user32::GetKeyState(i ${код клавиши}) i.r0"
Только с калбэками какая то хрень - или 0 или не 0. От этого вроде как и пляшут. Только это годится только для одного символа... И то много непонятного... А если , как я выше говорил ?
зы Пока калякал, ты уже нашёл этот пример. :)
Только с калбэками какая то хрень - или 0 или не 0. »
Выше я написал, если зажать кнопку и нажать на наш элемент кнопки - возвращается отрицательное значение
Если нажать кнопку и отжать - возвращается 1 (была нажата)
Если не была нажата кнопка - 0
А если , как я выше говорил ? »
А если нужно определить статус нажатия нескольких кнопок, то тебе нужна функция GetKeyboardState (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646299(v=vs.85).aspx)
Она сразу возвращает статус всех кнопок, только вот в функцию передавать нужно массив, а как это сделать - я не в курсе, может, Вячеслав подскажет
Либо наверное, придётся юзать в таком случае плагины NSIS для работы с массивами, не знаю даже
Привет, други.. :)
Пошарился тут по заказникам разрабов, но так толком и не нашел нормального описания по работе с ртф файлами..
Интересуют редактирование текста, кодировка, стилистика и т.д.. Что-нить по этой теме есть вообще с возможностями редактирования приближенными к редактору ?!
Интересуют редактирование текста, кодировка, стилистика и т.д.. Что-нить по этой теме есть вообще с возможностями редактирования приближенными к редактору ?! »
Так откройте RTF файл любым текстовым редактором, да посмотрите содержимое, и погуглите что-нибудь типа такой инфы (http://www.codenet.ru/progr/formt/rtf1.php)
Может, какие и консольные приложения есть для работы с RTF, не интересовался таким функционалом
но так толком и не нашел нормального описания по работе с ртф файлами.. »
А NSIS тут каким боком ?
интересуют редактирование текста, кодировка, стилистика и т.д.. »
Любой текстовый редактор типа Word и т.д.
Только RTF формат давно морально устарел.
Если уж форматы Microsoft Office 1997-2003 (.doc, .xls, .ppt) уже считаются архаичными (http://habrahabr.ru/post/152427/), то кому нужно это бесполезное старьё RTF...
Эм...
А NSIS тут каким боком ? »
Дык, прямым вообще-то, хотелось бы в нем писать создание этих файлов с требуемым форматированием, кодировкой и мультилангом, благо ЮТФ позволяет.
то кому нужно это бесполезное старьё RTF... »
Используется в старых игрушках для описания доки прочего, надоело по 100500 раз менять кодировки и лохматить тонну файлов на осьми языках.. :(
Дык, прямым вообще-то, хотелось бы в нем писать создание этих файлов с требуемым форматированием »
Это тоже самое, что говорить про предназначение велосипеда, он связан с паханием поля, велосипед создали - чтобы заменить домашний скот и на нём пахать поле в несколько гектаров
Я же вам дал наводку, RTF файл это тот же текстовый документ, но с особым содержанием, хотите разобраться - читайте доки в инете по типу той, что я вам указал в ссылке про формат файла
А для "создания и редактирования" RTF файлов есть софт, NSIS никак не связан с файлами любого типа, его задача - упаковать и распаковать, всё. Максимум - показать RTF файл в виде информации или лицензионного соглашения
хотелось бы в нем писать создание этих файлов »
Имеется ввиду написание скриптов NSIS ? Тогда уж лучше использовать специализированные текстовые редакторы.
Специализация заключается в подсветке синтаксиса программного кода и наличия специальных стилей-шаблонов, ну и конечно инструментов поиска-замены, создания макросов операций и пр. удобства, очень ускоряющие работу.
В частности для написания NSIS скриптов. Таких редакторов много ( http://ufprograms.ru/pages/text/besplatnye-tekstovye-redaktory.html ).
А лучший , на мой взгляд, - Notepad++ . Выбирай сам на свой вкус.
А RTF здесь и рядом не валялся. :)
надоело по 100500 раз менять кодировки »
Используй редакторы с автоопределением кодировки, где ничего не надо менять и выдумывать - просто открыть док. И сохраняй, нажатием одной кнопки в нужном формате - хоть один док , хоть тысячу (для чего в редакторах существуют спец макросы и пакетные режимы).
RTF и тут вообще не при делах...
Это тоже самое, что говорить про предназначение велосипеда, он связан с паханием поля, велосипед создали - чтобы заменить домашний скот и на нём пахать поле в несколько гектаров
Я же вам дал наводку, RTF файл это тот же текстовый документ, но с особым содержанием, хотите разобраться - читайте доки в инете по типу той, что я вам указал в ссылке про формат файла
А для "создания и редактирования" RTF файлов есть софт, NSIS никак не связан с файлами любого типа, его задача - упаковать и распаковать, всё. Максимум - показать RTF файл в виде информации или лицензионного соглашения »
Мда... я про Фому мне про Ерему...
Спрошу иначе, есть ли в Нсис возможности, для создания форматирования текста в файлах ртф. для txt-файлов точно есть команды, прописываемые в строку по тексту... а здесь?
Имеется ввиду написание скриптов NSIS ? »
Имеется ввиду написание текста для создания текстового файла средствами Нсис с расширением rtf, Т.е.
Например есть определенный код, в нем:
пишу команду создания файла
а далее, построчно или абзацами закидываю текст на 8 языках с его форматированием: размер, обычный, курсив, жирный, разрядка, выравнивание, шрифт и цвет текста.
закрываю запись в файл сохраняю.
В итоге, в каталоге инсталл будет требуемый файл *.rtf
Notepad++ я и так использую ибо работаю с ЮТФ версией Нсис..
Спрошу иначе, есть ли в Нсис возможности, для создания форматирования текста в файлах ртф »
для txt-файлов точно есть команды, прописываемые в строку по тексту... а здесь? »
Я же вам дал ссылку выше, RTF-файл - это TXT-файл с особым синтаксисом, то, что вы не хотите в этом разбираться и в упор игнорируете то, что вам пишут -ваши проблемы
Я же вам дал ссылку выше, RTF-файл - это TXT-файл с особым синтаксисом, то, что вы не хотите в этом разбираться и в упор игнорируете то, что вам пишут -ваши проблемы »
Причем тут ваши/не ваши проблемы?
И потом, как же не игнорировать, если спрашиваю про возможности Нсис для форматирования текста в ртф, а в ответ получаю рекомендации на тему редактирования этих файлов внешними текстовыми редакторами и прочее... ?!
Т.е. тот код по вашей ссылке внешне похожий на Си(вроде как) отработает в инсталлере или нет, если его указывать?
Пример хотя бы увидеть какой, дальше сам разберусь.
И потом, как же не игнорировать, если спрашиваю про возможности Нсис для форматирования текста в ртф, а в ответ получаю »
Я вам сразу же дал ссылку, по которой вы можете увидеть принцин написания RTF файла через текстовый редактор, т.е. указанное содержимое может быть записано с помощью команд NSIS, а какой синтаксис будет - сидите и изучайте по статье, ссылку на которую я вам дал
Т.е. тот код по вашей ссылке внешне похожий на Си(вроде как) »
Это и есть содержимое RTF файла, а не код языка программирования, так сказать "особая кодировка файла", статью читать нужно, а не высматривать отдельные куски в тексте
Откройте любой RTF файл через текстовый редактор, сколько ещё раз нужно это повторить, чтобы вы попробовали это сделать?
Пример хотя бы увидеть какой, дальше сам разберусь. »
Вряд ли у кого-то появится здесь желание разбираться в формате RTF только для того, чтобы показать вам пример, да и какой пример, если в статье всё расписано? Вам нужно только правильно прописать данные в TXT файл с расширением RTF, вот и всё создание RTF файла
Вот пример RTF файла, в котором написано:
Windows 7 Ultimate
{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\colortbl ;\red255\green0\blue0;}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang1033\f0\fs22 Windows \b 7\b0 \cf1 Ultimate\cf0\par
}
Видите? Обычный TXT файл с особым содержанием
Вот пример RTF файла, в котором написано:
Windows 7 Ultimate »
Да, все разобрался, и что нужно вкрутил в инсталляшку.
Спасибо. :)
TretyakRoman
04-02-2014, 16:13
Всем привет, при написание инсталлятора столкнулся с проблемой добавления нужных записей в реестр, делаю все по справочнику:
WriteRegStr HKLM "SOFTWARE\aroganit" "Product_Version" "${PRODUCT_VERSION}"
WriteRegStr HKLM "SOFTWARE\aroganit" "Install_Date" "$2.$1.$0 $4:$5:$6"
WriteRegStr HKLM "SOFTWARE\aroganit" "Install_Dir" "$INSTDIR"
WriteRegStr HKLM "SOFTWARE\aroganit" "db" "aroganit"
WriteRegStr HKLM "SOFTWARE\aroganit" "server" "."
Проблема заключается в том что в ветку HKLM не записываются эти параметры, а в HKCU все нормально.
Начал дальше разбираться, нашел вот такую штучку:
RequestExecutionLevel admin
К сожалению ни каких результатов не дало.
Пробовал другие варианты:
ExecWait reg add hklm\SOFTWARE\aroganit /v Product_Version /t REG_SZ /d ${PRODUCT_VERSION} и т.д., не получилось
Затем создал bat-ник и reg-файл и их запускал с помощью ExecWait, успеха не дало.
Вручную reg-файл через cmd выполнялся успешно, bat-ник выполнялся успешно только когда cmd под админом.
Проблемы скорее всего с правами, как мне их повысить в NSIS. Буду благодарен за помощь :)
Begin2Fly
04-02-2014, 16:23
TretyakRoman, скорее всего у вас всё переадресуется в Software\WoW6432Node. Перед командами записи в реестр напишите такое: SetRegView 64
TretyakRoman
04-02-2014, 16:32
Помогло, буду дальше развивать свои навыки в NSIS. Спасибо большое.
На странице компонент пользователь отмечает нужные. Как для каждой из них указать свою директорию?
Понимаю, что вопрос туп, справочник и руководство причитал.
Спасибо.
На странице компонент пользователь отмечает нужные. Как для каждой из них указать свою директорию? »
См. здесь : http://forums.winamp.com/showthread.php?t=230330
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC