Войти
NeoBooker.ru
Добро пожаловать к нам в гости!
Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
  • Страница 1 из 1
  • 1
Модератор форума: Peter, DEMBEL, YURIY  
Работа с реестром
CerbyДата: Вт, 24 Июня 2014, 09:26 | Сообщение # 1
Новичок
Здравствуйте, решил привязать к проекту файл справки .pdf, не хочу трать время на создание .chm
Сделал так:
RAC_RegEnumKey "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader" "1"
IfEx "[RAC_Error]=1 or [RAC_Error]=-1"
MessageBox "Ошибка" "Приложение Acrobat Reader не было найдено!|Данное приложение необходимо для просмотра|файлов помощи программы.|Перейти на официальный сайт Acrobat Reader?" "Да|Нет" "[ButMesBox]"
If "[ButMesBox]" "=" "1"
InternetLink "http://get.adobe.com/ru/reader"
EndIf
Else
If "[RAC_Error]" "=" "0"
Run "[PubDir]Руководство пользователя.pdf" "" "RunOnce" "" ""
EndIf
EndIf
Первый кусок определяет, а есть ли у конечного пользователя Acrobat Reader - это все работает нормально.
На компьютере с антивирусом плагин RAC считается трояном, не очень хорошо для репутации распространяемого ПО. Предложите замену команде RAC_RegEnumKey.
 
СообщениеЗдравствуйте, решил привязать к проекту файл справки .pdf, не хочу трать время на создание .chm
Сделал так:
RAC_RegEnumKey "HKEY_LOCAL_MACHINE\SOFTWARE\Adobe\Acrobat Reader" "1"
IfEx "[RAC_Error]=1 or [RAC_Error]=-1"
MessageBox "Ошибка" "Приложение Acrobat Reader не было найдено!|Данное приложение необходимо для просмотра|файлов помощи программы.|Перейти на официальный сайт Acrobat Reader?" "Да|Нет" "[ButMesBox]"
If "[ButMesBox]" "=" "1"
InternetLink "http://get.adobe.com/ru/reader"
EndIf
Else
If "[RAC_Error]" "=" "0"
Run "[PubDir]Руководство пользователя.pdf" "" "RunOnce" "" ""
EndIf
EndIf
Первый кусок определяет, а есть ли у конечного пользователя Acrobat Reader - это все работает нормально.
На компьютере с антивирусом плагин RAC считается трояном, не очень хорошо для репутации распространяемого ПО. Предложите замену команде RAC_RegEnumKey.

Автор - Cerby
Дата добавления - 24 Июня 2014 в 09:26
mishemДата: Вт, 24 Июня 2014, 10:44 | Сообщение # 2
Эксперт форума
А родные команды не справляются с задачей?
RegistryRead
RegistryWrite


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



Если вы думаете, что сможете — вы сможете, если думаете, что нет — вы правы.
 
СообщениеА родные команды не справляются с задачей?
RegistryRead
RegistryWrite

Автор - mishem
Дата добавления - 24 Июня 2014 в 10:44
CerbyДата: Вт, 24 Июня 2014, 15:06 | Сообщение # 3
Новичок
Я тут подумал, логичнее будет искать не установленное приложение в директории реестра HKEY_LOCAL_MACHINE, а в списке ассоциации расширений HKEY_CLASSES_ROOT.
Мне нужно знать, есть ли у пользователя каталог .pdf
Пробую: RegistryRead "HKEY_CLASSES_ROOT" "???" "[var]"
??? - что указать в секций, ".pdf" не работает.
 
СообщениеЯ тут подумал, логичнее будет искать не установленное приложение в директории реестра HKEY_LOCAL_MACHINE, а в списке ассоциации расширений HKEY_CLASSES_ROOT.
Мне нужно знать, есть ли у пользователя каталог .pdf
Пробую: RegistryRead "HKEY_CLASSES_ROOT" "???" "[var]"
??? - что указать в секций, ".pdf" не работает.

Автор - Cerby
Дата добавления - 24 Июня 2014 в 15:06
mishemДата: Вт, 24 Июня 2014, 19:44 | Сообщение # 4
Эксперт форума
Я не знаю точно. Нужно в интернете информацию искать, или просить что бы люди посмотрели, или устанавливать, удалять всякий разный софт и смотреть что и где какой оставляет.

Например у меня возвращает STDUViewerFile.PDF при обращении

Код
RegistryRead "HKEY_LOCAL_MACHINE" "SOFTWARE\Classes\.pdf\" "[Result]"


Вполне возможно если нет софта ассоциировано с этим расширением, то результат будет пустой.

Можете попробовать воспользоваться командой

zmOpenWithDefault "" ""

из плагина zmFunctions.


Не хочешь читать хелп?

Если хелп и форум не помогли, тогда все ответы здесь



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

Например у меня возвращает STDUViewerFile.PDF при обращении

Код
RegistryRead "HKEY_LOCAL_MACHINE" "SOFTWARE\Classes\.pdf\" "[Result]"


Вполне возможно если нет софта ассоциировано с этим расширением, то результат будет пустой.

Можете попробовать воспользоваться командой

zmOpenWithDefault "" ""

из плагина zmFunctions.

Автор - mishem
Дата добавления - 24 Июня 2014 в 19:44
antonДата: Вт, 24 Июня 2014, 19:56 | Сообщение # 5
Ветеран форума
Цитата Cerby ()
Мне нужно знать, есть ли у пользователя каталог .pdf
Пробую: RegistryRead "HKEY_CLASSES_ROOT" "???" "[var]"
??? - что указать в секций, ".pdf" не работает


Добавь в конец секции реестра слеш - \
Код
RegistryRead "HKEY_CLASSES_ROOT" ".pdf\" "[var]"


"Вы знаете, нам очень понравились все варианты, что вы прислали. Даже не знаем, что выбрать… А может попробуем объединить все три логотипа в один?"

Сообщение отредактировано
anton - Вт, 24 Июня 2014, 19:58
 
Сообщение
Цитата Cerby ()
Мне нужно знать, есть ли у пользователя каталог .pdf
Пробую: RegistryRead "HKEY_CLASSES_ROOT" "???" "[var]"
??? - что указать в секций, ".pdf" не работает


Добавь в конец секции реестра слеш - \
Код
RegistryRead "HKEY_CLASSES_ROOT" ".pdf\" "[var]"

Автор - anton
Дата добавления - 24 Июня 2014 в 19:56
СергейДата: Ср, 25 Июня 2014, 00:33 | Сообщение # 6
Необукер
Простенький итог выше изложенного:
1) поиск программы читалки pdf
2) запуск Руководство пользователя.pdf


Добавлено (25 Июня 2014, 00:33)
---------------------------------------------
да кстати по поводу ассоциации расширений...
Где то мельком читал, что в 8 винде не все гладко...
То ли (.pdf) нет, то ли во всех (.*) такого(по умолчанию) вроде нет, и/или там всегда пусто
Врать не буду, не помню точно, пишу чтоб был в курсе этого нюанса ну и в гугле уточни.
Если найдешь, то ситуацию опиши тут :)
---------------------------------------------
маленький пример)
Прикрепления: extass.zip (3.6 Kb)


Сообщение отредактировано
Сергей - Ср, 25 Июня 2014, 01:59
 
СообщениеПростенький итог выше изложенного:
1) поиск программы читалки pdf
2) запуск Руководство пользователя.pdf


Добавлено (25 Июня 2014, 00:33)
---------------------------------------------
да кстати по поводу ассоциации расширений...
Где то мельком читал, что в 8 винде не все гладко...
То ли (.pdf) нет, то ли во всех (.*) такого(по умолчанию) вроде нет, и/или там всегда пусто
Врать не буду, не помню точно, пишу чтоб был в курсе этого нюанса ну и в гугле уточни.
Если найдешь, то ситуацию опиши тут :)
---------------------------------------------
маленький пример)

Автор - Сергей
Дата добавления - 25 Июня 2014 в 00:33
ВадимДата: Ср, 25 Июня 2014, 08:39 | Сообщение # 7
Генератор идей
Цитата mishem ()
Можете попробовать воспользоваться командой
zmOpenWithDefault "" ""

Это самый удобный и корректный, на мой взгляд, вариант. Важно ведь еще, чтобы пользователю не навязывали какую-то конкретную программу для просмотра PDF.
Например, у меня по умолчанию стоит SumatraPDF, я бы хотел, чтобы файл справки открывался именно с ее помощью.
Либо, если без плагина, нужно проверять в реестре какая программа установлена по умолчанию и запускать именно ее.


Бесплатный онлайн курс программирования в VisualNEO Win (NeoBook)

Сообщение отредактировано
Вадим - Ср, 25 Июня 2014, 08:42
 
Сообщение
Цитата mishem ()
Можете попробовать воспользоваться командой
zmOpenWithDefault "" ""

Это самый удобный и корректный, на мой взгляд, вариант. Важно ведь еще, чтобы пользователю не навязывали какую-то конкретную программу для просмотра PDF.
Например, у меня по умолчанию стоит SumatraPDF, я бы хотел, чтобы файл справки открывался именно с ее помощью.
Либо, если без плагина, нужно проверять в реестре какая программа установлена по умолчанию и запускать именно ее.

Автор - Вадим
Дата добавления - 25 Июня 2014 в 08:39
СергейДата: Ср, 25 Июня 2014, 20:38 | Сообщение # 8
Необукер
Вспомнил тут про фичи - "диалоговое окно "Открыть с помощью..."" и "Открыть программой по умолчанию"
Если все можно сделать средствами НБ, то плагин только ради этого, будет лишний)))
Можно дополнить пример выше еще и этими командами
1) Открыть программой по умолчанию
Код

If "[file]" "<>" ""
Run "Explorer.exe" "[#34][file][#34]" "Normal" "" ""
EndIf

2)Вызвать диалоговое окно - "Открыть с помощью..."
Код

If "[file]" "<>" ""
Run "rundll32.exe" "shell32.dll,OpenAs_RunDLL [file]" "Normal" "" ""
EndIf

,


Сообщение отредактировано
Сергей - Ср, 25 Июня 2014, 20:48
 
СообщениеВспомнил тут про фичи - "диалоговое окно "Открыть с помощью..."" и "Открыть программой по умолчанию"
Если все можно сделать средствами НБ, то плагин только ради этого, будет лишний)))
Можно дополнить пример выше еще и этими командами
1) Открыть программой по умолчанию
Код

If "[file]" "<>" ""
Run "Explorer.exe" "[#34][file][#34]" "Normal" "" ""
EndIf

2)Вызвать диалоговое окно - "Открыть с помощью..."
Код

If "[file]" "<>" ""
Run "rundll32.exe" "shell32.dll,OpenAs_RunDLL [file]" "Normal" "" ""
EndIf

,

Автор - Сергей
Дата добавления - 25 Июня 2014 в 20:38
CerbyДата: Пт, 27 Июня 2014, 07:39 | Сообщение # 9
Новичок
StrReplace "[pdf_app]" "%1" "" "[pdf_app]" ""
StrReplace "[pdf_app]" "[#34]" "" "[pdf_app]" ""

Может быть допущена ошибка при формировании переменной pdf_app
У меня значение переменной принимает вид

C:\Program Files\SumatraPDF\SumatraPDF.exe %*

Соответственно при выполнении FileExists "[pdf_app]" "[ok]"
Ок окажется False.
 
СообщениеStrReplace "[pdf_app]" "%1" "" "[pdf_app]" ""
StrReplace "[pdf_app]" "[#34]" "" "[pdf_app]" ""

Может быть допущена ошибка при формировании переменной pdf_app
У меня значение переменной принимает вид

C:\Program Files\SumatraPDF\SumatraPDF.exe %*

Соответственно при выполнении FileExists "[pdf_app]" "[ok]"
Ок окажется False.

Автор - Cerby
Дата добавления - 27 Июня 2014 в 07:39
toizyДата: Пт, 27 Июня 2014, 09:24 | Сообщение # 10
Студийная субстанция
Ну так правильно, параметр запуска. False или нет, по факту должен запускаться.

катился колобок по лесу
пел песню он закрыв глаза
а как с открытыми катиться
когда ты катишься лицом
 
СообщениеНу так правильно, параметр запуска. False или нет, по факту должен запускаться.

Автор - toizy
Дата добавления - 27 Июня 2014 в 09:24
CerbyДата: Пт, 27 Июня 2014, 10:11 | Сообщение # 11
Новичок
Цитата toizy ()
Ну так правильно

Знак процента надо удалить в конце пути, тогда все заработает.

Добавлено (27 Июня 2014, 10:11)
---------------------------------------------

Цитата Сергей ()
Простенький итог выше изложенного:
1) поиск программы читалки pdf
2) запуск Руководство пользователя.pdf

3) при повторном нажатии пользователя на кнопку "Справка" нужно восстановить окно документа pdf если оно уже запущенно
Код

zmGetWindowHandle "Руководство пользователя.pdf" "[app_id]"
If "[app_id]" ">" "0"
    zmShowWindow "[app_id]" "Restore"
    Return
EndIf
RegistryRead "HKEY_CLASSES_ROOT" ".pdf\" "[pdf]"
IfEx "[pdf] = [#34][#34] OR [LastError] <> [#34][#34]"
        MessageBox "Ошибка" "Приложение для чтения PDF-файлов не найдено!|Перейти на официальный сайт Acrobat Reader?" "Да|Нет" "[ButMesBox]"
        If "[ButMesBox]" "=" "1"
           InternetLink "http://get.adobe.com/ru/reader"
        EndIf
        If "[ButMesBox]" "=" "2"
           Run "rundll32.exe" "shell32.dll,OpenAs_RunDLL [file]" "Normal" "" ""
        EndIf
        Return
EndIf
ClearVariables "LastError"
RegistryRead "HKEY_CLASSES_ROOT" "[pdf]\shell\open\command\" "[pdf_app]"
IfEx "[pdf_app] = [#34][#34] OR [LastError] <> [#34][#34]"
        ...Приложение для чтения PDF-файлов не найдено
        Return
EndIf
StrReplace "[pdf_app]" "%1" "" "[pdf_app]" ""
StrReplace "[pdf_app]" "[#34]" "" "[pdf_app]" ""
StrReplace "[pdf_app]" "%*" "" "[pdf_app]" ""
FileExists "[pdf_app]" "[ok]"
If "[ok]" "=" "False"
        ...Приложение для чтения PDF-файлов не найдено
        Return
EndIf
Run "[PubDir]Руководство пользователя.pdf" "" "Normal" "" ""
 
Сообщение
Цитата toizy ()
Ну так правильно

Знак процента надо удалить в конце пути, тогда все заработает.

Добавлено (27 Июня 2014, 10:11)
---------------------------------------------

Цитата Сергей ()
Простенький итог выше изложенного:
1) поиск программы читалки pdf
2) запуск Руководство пользователя.pdf

3) при повторном нажатии пользователя на кнопку "Справка" нужно восстановить окно документа pdf если оно уже запущенно
Код

zmGetWindowHandle "Руководство пользователя.pdf" "[app_id]"
If "[app_id]" ">" "0"
    zmShowWindow "[app_id]" "Restore"
    Return
EndIf
RegistryRead "HKEY_CLASSES_ROOT" ".pdf\" "[pdf]"
IfEx "[pdf] = [#34][#34] OR [LastError] <> [#34][#34]"
        MessageBox "Ошибка" "Приложение для чтения PDF-файлов не найдено!|Перейти на официальный сайт Acrobat Reader?" "Да|Нет" "[ButMesBox]"
        If "[ButMesBox]" "=" "1"
           InternetLink "http://get.adobe.com/ru/reader"
        EndIf
        If "[ButMesBox]" "=" "2"
           Run "rundll32.exe" "shell32.dll,OpenAs_RunDLL [file]" "Normal" "" ""
        EndIf
        Return
EndIf
ClearVariables "LastError"
RegistryRead "HKEY_CLASSES_ROOT" "[pdf]\shell\open\command\" "[pdf_app]"
IfEx "[pdf_app] = [#34][#34] OR [LastError] <> [#34][#34]"
        ...Приложение для чтения PDF-файлов не найдено
        Return
EndIf
StrReplace "[pdf_app]" "%1" "" "[pdf_app]" ""
StrReplace "[pdf_app]" "[#34]" "" "[pdf_app]" ""
StrReplace "[pdf_app]" "%*" "" "[pdf_app]" ""
FileExists "[pdf_app]" "[ok]"
If "[ok]" "=" "False"
        ...Приложение для чтения PDF-файлов не найдено
        Return
EndIf
Run "[PubDir]Руководство пользователя.pdf" "" "Normal" "" ""

Автор - Cerby
Дата добавления - 27 Июня 2014 в 10:11
СергейДата: Пт, 27 Июня 2014, 20:34 | Сообщение # 12
Необукер
Цитата Cerby ()
Может быть допущена ошибка при формировании переменной pdf_app У меня значение переменной принимает вид

Это просто был пример с коленки на портянке....
А в проекте (extass.zip) это все учтено, там немного по другому выдирается путь.


Сообщение отредактировано
Сергей - Вс, 29 Июня 2014, 06:37
 
Сообщение
Цитата Cerby ()
Может быть допущена ошибка при формировании переменной pdf_app У меня значение переменной принимает вид

Это просто был пример с коленки на портянке....
А в проекте (extass.zip) это все учтено, там немного по другому выдирается путь.

Автор - Сергей
Дата добавления - 27 Июня 2014 в 20:34
  • Страница 1 из 1
  • 1
Поиск: