PDA

Показать полную графическую версию : .: NSIS - все вопросы :. часть 2.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 [50] 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

K.A.V.
30-01-2014, 11:05
Не над, а внутри границ »
Имею ввиду "внешне" ;)

Если взять ранее предлагаемый пример с вводом пароля, то отследить нахождение указателя можно, добавив в Function EditNotify такой код : »
Ну, это видать только под конкретный 1 элемент на страничке я так понял? А если 2 Edit'a, твоя функция также останется актуальна? :)

Наверняка можно сделать изящнее и продвинутее, но возиться не понятно ради чего, лень, да и знаний не хватает... »
Именно поэтому я не стал выкладывать свой код, потому что конкретной цели не особо вижу (да и только набросав, выкладывать "колючий" стыдно), как я выше написал - функция всё равно будет багнутой изначально, т.к. если я введу в элемент значение будучи держа курсор рядом с элементом - провал функции, т.к. ну ты сам понял, положение курсора != а мы уже расчитали и поменяли значение у юзера, что может у него вызвать удивление и забаву, хотя можно потом сказать, что "это не баг, это фича" :biggrin:
Если юзать GDI32, как у меня сейчас в коде (тоже не знал как делать, после твоего первого сообщения с упоминанием PtInRect полез по MSDN), то там создаётся регион от размера элемента (так сказать "невидимые границы"), и потом вызов функции проверки, находятся ли указанные координаты (в нашем случае положение курсора мыши) в пределах этих "невидимых линий", вроде бы тоже работает, если мне не показалось :)

каким образом отслеживать клики нужных кнопок мыши »
Это походу только с хуками делается, вообще не в курсе

как организовать комбинированные нажатия на кнопки, совместно с выбранным символом клавиш. ( Например, на странице есть кнопка, нажав которую совместно с цифрой 1 »
В момент нажатия кнопки просто проверять статус, нажата ли указанная клавиша, тоже если покопаться по MSDN, думаю такую функцию не составит труда найти, наверное :)

K.A.V.
30-01-2014, 11:38
Вроде как для этого можно использовать 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

MKN
30-01-2014, 11:40
А если 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. От этого вроде как и пляшут. Только это годится только для одного символа... И то много непонятного... А если , как я выше говорил ?

зы Пока калякал, ты уже нашёл этот пример. :)

K.A.V.
30-01-2014, 12:21
Только с калбэками какая то хрень - или 0 или не 0. »
Выше я написал, если зажать кнопку и нажать на наш элемент кнопки - возвращается отрицательное значение
Если нажать кнопку и отжать - возвращается 1 (была нажата)
Если не была нажата кнопка - 0

А если , как я выше говорил ? »
А если нужно определить статус нажатия нескольких кнопок, то тебе нужна функция GetKeyboardState (http://msdn.microsoft.com/en-us/library/windows/desktop/ms646299(v=vs.85).aspx)
Она сразу возвращает статус всех кнопок, только вот в функцию передавать нужно массив, а как это сделать - я не в курсе, может, Вячеслав подскажет
Либо наверное, придётся юзать в таком случае плагины NSIS для работы с массивами, не знаю даже

MaGoth
01-02-2014, 19:32
Привет, други.. :)
Пошарился тут по заказникам разрабов, но так толком и не нашел нормального описания по работе с ртф файлами..
Интересуют редактирование текста, кодировка, стилистика и т.д.. Что-нить по этой теме есть вообще с возможностями редактирования приближенными к редактору ?!

K.A.V.
01-02-2014, 20:07
Интересуют редактирование текста, кодировка, стилистика и т.д.. Что-нить по этой теме есть вообще с возможностями редактирования приближенными к редактору ?! »
Так откройте RTF файл любым текстовым редактором, да посмотрите содержимое, и погуглите что-нибудь типа такой инфы (http://www.codenet.ru/progr/formt/rtf1.php)
Может, какие и консольные приложения есть для работы с RTF, не интересовался таким функционалом

MKN
01-02-2014, 21:23
но так толком и не нашел нормального описания по работе с ртф файлами.. »
А NSIS тут каким боком ?
интересуют редактирование текста, кодировка, стилистика и т.д.. »
Любой текстовый редактор типа Word и т.д.
Только RTF формат давно морально устарел.
Если уж форматы Microsoft Office 1997-2003 (.doc, .xls, .ppt) уже считаются архаичными (http://habrahabr.ru/post/152427/), то кому нужно это бесполезное старьё RTF...

MaGoth
01-02-2014, 21:36
Эм...
А NSIS тут каким боком ? »
Дык, прямым вообще-то, хотелось бы в нем писать создание этих файлов с требуемым форматированием, кодировкой и мультилангом, благо ЮТФ позволяет.

то кому нужно это бесполезное старьё RTF... »
Используется в старых игрушках для описания доки прочего, надоело по 100500 раз менять кодировки и лохматить тонну файлов на осьми языках.. :(

K.A.V.
02-02-2014, 07:59
Дык, прямым вообще-то, хотелось бы в нем писать создание этих файлов с требуемым форматированием »
Это тоже самое, что говорить про предназначение велосипеда, он связан с паханием поля, велосипед создали - чтобы заменить домашний скот и на нём пахать поле в несколько гектаров
Я же вам дал наводку, RTF файл это тот же текстовый документ, но с особым содержанием, хотите разобраться - читайте доки в инете по типу той, что я вам указал в ссылке про формат файла
А для "создания и редактирования" RTF файлов есть софт, NSIS никак не связан с файлами любого типа, его задача - упаковать и распаковать, всё. Максимум - показать RTF файл в виде информации или лицензионного соглашения

MKN
02-02-2014, 11:04
хотелось бы в нем писать создание этих файлов »
Имеется ввиду написание скриптов NSIS ? Тогда уж лучше использовать специализированные текстовые редакторы.
Специализация заключается в подсветке синтаксиса программного кода и наличия специальных стилей-шаблонов, ну и конечно инструментов поиска-замены, создания макросов операций и пр. удобства, очень ускоряющие работу.
В частности для написания NSIS скриптов. Таких редакторов много ( http://ufprograms.ru/pages/text/besplatnye-tekstovye-redaktory.html ).
А лучший , на мой взгляд, - Notepad++ . Выбирай сам на свой вкус.
А RTF здесь и рядом не валялся. :)

надоело по 100500 раз менять кодировки »
Используй редакторы с автоопределением кодировки, где ничего не надо менять и выдумывать - просто открыть док. И сохраняй, нажатием одной кнопки в нужном формате - хоть один док , хоть тысячу (для чего в редакторах существуют спец макросы и пакетные режимы).
RTF и тут вообще не при делах...

MaGoth
02-02-2014, 18:59
Это тоже самое, что говорить про предназначение велосипеда, он связан с паханием поля, велосипед создали - чтобы заменить домашний скот и на нём пахать поле в несколько гектаров
Я же вам дал наводку, RTF файл это тот же текстовый документ, но с особым содержанием, хотите разобраться - читайте доки в инете по типу той, что я вам указал в ссылке про формат файла
А для "создания и редактирования" RTF файлов есть софт, NSIS никак не связан с файлами любого типа, его задача - упаковать и распаковать, всё. Максимум - показать RTF файл в виде информации или лицензионного соглашения »
Мда... я про Фому мне про Ерему...
Спрошу иначе, есть ли в Нсис возможности, для создания форматирования текста в файлах ртф. для txt-файлов точно есть команды, прописываемые в строку по тексту... а здесь?

Имеется ввиду написание скриптов NSIS ? »
Имеется ввиду написание текста для создания текстового файла средствами Нсис с расширением rtf, Т.е.

Например есть определенный код, в нем:
пишу команду создания файла
а далее, построчно или абзацами закидываю текст на 8 языках с его форматированием: размер, обычный, курсив, жирный, разрядка, выравнивание, шрифт и цвет текста.
закрываю запись в файл сохраняю.

В итоге, в каталоге инсталл будет требуемый файл *.rtf
Notepad++ я и так использую ибо работаю с ЮТФ версией Нсис..

K.A.V.
03-02-2014, 02:52
Спрошу иначе, есть ли в Нсис возможности, для создания форматирования текста в файлах ртф »
для txt-файлов точно есть команды, прописываемые в строку по тексту... а здесь? »
Я же вам дал ссылку выше, RTF-файл - это TXT-файл с особым синтаксисом, то, что вы не хотите в этом разбираться и в упор игнорируете то, что вам пишут -ваши проблемы

MaGoth
03-02-2014, 03:19
Я же вам дал ссылку выше, RTF-файл - это TXT-файл с особым синтаксисом, то, что вы не хотите в этом разбираться и в упор игнорируете то, что вам пишут -ваши проблемы »
Причем тут ваши/не ваши проблемы?
И потом, как же не игнорировать, если спрашиваю про возможности Нсис для форматирования текста в ртф, а в ответ получаю рекомендации на тему редактирования этих файлов внешними текстовыми редакторами и прочее... ?!

Т.е. тот код по вашей ссылке внешне похожий на Си(вроде как) отработает в инсталлере или нет, если его указывать?
Пример хотя бы увидеть какой, дальше сам разберусь.

K.A.V.
03-02-2014, 03:31
И потом, как же не игнорировать, если спрашиваю про возможности Нсис для форматирования текста в ртф, а в ответ получаю »
Я вам сразу же дал ссылку, по которой вы можете увидеть принцин написания 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 файл с особым содержанием

MaGoth
03-02-2014, 05:29
Вот пример 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. Спасибо большое.

navab
05-02-2014, 11:53
На странице компонент пользователь отмечает нужные. Как для каждой из них указать свою директорию?
Понимаю, что вопрос туп, справочник и руководство причитал.
Спасибо.

MKN
05-02-2014, 12:27
На странице компонент пользователь отмечает нужные. Как для каждой из них указать свою директорию? »
См. здесь : http://forums.winamp.com/showthread.php?t=230330




© OSzone.net 2001-2012