Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Чтение из реестра пути и запуск файла.
serega393Дата: Среда, 02 Мая 2007, 23:20 | Сообщение # 1
Новый участник
Группа: Пользователи
Сообщений: 1
Репутация: 0
Награды: 0
Статус: Offline
При создании авторана для игры столкнулся с проблемой запуска и удаления игры через меню.
Как при нажатии кнопки запускать файл путь к которому берётся из реестра или ini файла.
 
toizyДата: Четверг, 03 Мая 2007, 14:54 | Сообщение # 2
Студийная субстанция
Группа: Администраторы
Сообщений: 2309
Репутация: 29
Награды: 12
Статус: Offline
Run("s$","")?

Жизнь оказалась не такой уж и забавной, как поначалу...
 
FreeStylerДата: Вторник, 16 Февраля 2010, 07:13 | Сообщение # 3
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
Ну вот у меня в ветке
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\City Life Edition 2008_is1\Inno Setup: App Path
значение
E:\Games\City Life Edition 2008

Задача: нужно взять этот путь и запустить файл CLD.exe, который находится
в E:\Games\City Life Edition 2008\bin\CLD.exe

Написал:

LoadVariable("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\City Life Edition 2008_is1\Inno Setup: App Path","path$")
path$=path$+'\bin\CLD.exe'
Run("path$\bin\CLD.exe","")

Не пашет! Т.е. пишет не может найти файл \bin\CLD.exe, т.е. вообще почему-то не берёт инфу из реестра! Подскажите где ошибка?

 
DEMBELДата: Вторник, 16 Февраля 2010, 07:26 | Сообщение # 4
Наш дизайнер
Группа: Модераторы
Сообщений: 2266
Репутация: 135
Награды: 32
Статус: Offline
LoadVariable не поможет, оно читает не по всему реестру, а только в пределах определенной ветки. Используется в основном для чтения параметров, установленных с помощью SaveVariable. Но прочитать все равно можно, правда через заднее место, смотри тут.

Добавлено (16 Февраль 2010, 07:26)
---------------------------------------------
можно прочитать и не используя внедренный vbs-скрипт, а консольную команду REG, так проще будет, разберись только с ее синтаксисом.




Win7x64 SP1 Neobook v5.70 (Trial)
WinXP SP3 Neobook v5.62
 
FreeStylerДата: Вторник, 16 Февраля 2010, 08:59 | Сообщение # 5
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
Да я вот авторун видел сделанный с помощью MMB и там было так: если игра установлена, то становится доступной кнопка играть, вот как они реализовали такое - не пойму!

К тому же если

Quote
LoadVariable не поможет, оно читает не по всему реестру,

как тогда они это реализовали.
В http://mmbuilder.ru/load/30-1-0-532 этом примере заносится в файл значение а потом берётся в бокс, а как внести в переменную и потом её вставить в путь Run'a? %)

Добавлено (16 Февраль 2010, 08:59)
---------------------------------------------
Пробовал как-то так, не тянет

Code

** формируем командную строку для запуска внедренного vbs-скрипта
** скрипт положит значение переменной во временный файл
string$='"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\City Life Edition 2008_is1\Inno Setup: App Path"'
run$='WAIT '+string$
Run("<Embedded>\regread2.vbs","run$")
Hide("Text4")
Show("PG2")
** читаем значение ключа из временного файла и загружаем его
** в обьект параграф - PG2
LoadText("PG2","<Temp>\RegTmp.tmp")
ListBoxAddItem("str$","<Temp>\RegTmp.tmp")
Run("str$","")
** удаляем временный файл
del$='WAIT,HIDE /c del '+<Temp>+'\RegTmp.tmp'+' /f /Q'
Run("cmd","del$")

Блин такая простая до ужасти задача, а не могу найти программу которая её выполнит! Пытался в Autoplay Media Studio - тоже не хочет путь этот извлекать!
Может кто знает программку, которая может?

Прикрепления: 0271460.png (307.0 Kb)


Сообщение отредактировал FreeStyler - Вторник, 16 Февраля 2010, 09:10
 
Alex3AДата: Вторник, 16 Февраля 2010, 14:03 | Сообщение # 6
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
FreeStyler, LoadVariable работает только с выделенной в ммб веткой реестра,
и предназначено для хранения переменных.
Тебе ни кто не мешает сделать файл реестра *.reg и запустить его из ммв,
командой Run. Его то же можно собрать в скрипте ммв.
Путь к твоей проге при ее запуске описывается макросом
<SrcDir>. Что то записать в реестре, другим способом, можно и с помощью
vbs скрипта, а так же иных методов. Так что больших проблем в этом нет,
главное что бы написал все правильно, согласно синтаксису.
 
YURIYДата: Вторник, 16 Февраля 2010, 15:35 | Сообщение # 7
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (FreeStyler)
Может кто знает программку, которая может?

Ничего не понимаю. Тебе уже дали готовый проект:

Quote (DEMBEL)
Но прочитать все равно можно, правда через заднее место, смотри тут

Неужели сложно скачать и посмотреть? С ним задача решается за 1 минуту!



Вечная память Андрею Сергееву!
 
FreeStylerДата: Вторник, 16 Февраля 2010, 17:59 | Сообщение # 8
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
Alex3A, Вы явно что-то не поняли
YURIY, скачал, посмотрел, написал
Quote (YURIY)
Пробовал как-то так, не тянет

Добавлено (16 Февраль 2010, 17:59)
---------------------------------------------
Если знаете как - напишите, пожалуйста!

 
Alex3AДата: Вторник, 16 Февраля 2010, 21:07 | Сообщение # 9
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Что бы считать значение из регистра, в примере YURIY, запускется скрипт vbs regread2.vbs который считывает значение и сохраняет его в файл, который потом считывает твоя прога.
Quote (FreeStyler)
Пробовал как-то так, не тянет

Это ты просто не тянеш, посему, тебе надо узнать что такое внедренные файлы и как
поиметь файл со скриптом regread2.vbs.
 
FreeStylerДата: Среда, 17 Февраля 2010, 00:28 | Сообщение # 10
Новый участник
Группа: Пользователи
Сообщений: 4
Репутация: 0
Награды: 0
Статус: Offline
Alex3A, если бы тянул я бы здесь не просил о помощи B)
Задача простая - прочитать путь из ветки и запустить через Run! Не справляется программа с этой задачей, Бог с ней! Я не программист, чтобы писать мега скрипты regread2.vbs, был бы уже б сам написал на каком нибудь делфи свой авторун и не парился!
Спасибо за помощь!
Для обычных пользователей вопрос так и остаётся открытым


Сообщение отредактировал FreeStyler - Среда, 17 Февраля 2010, 00:55
 
YURIYДата: Среда, 17 Февраля 2010, 01:59 | Сообщение # 11
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (FreeStyler)
Не справляется программа с этой задачей, Бог с ней!

В программе функции такой нет, уже ведь писали!

Quote (FreeStyler)
YURIY, скачал, посмотрел, написал

Пардон, пропустил. Тогда советую использовать этот плагин:

http://smallplugin.com/ru/

У меня с ним всё получилось.

Добавлено (17 Февраль 2010, 01:09)
---------------------------------------------

Quote (Alex3A)
Это ты просто не тянеш, посему, тебе надо узнать что такое внедренные файлы и как поиметь файл со скриптом regread2.vbs.

Не нужно совсем. В VBS передаются нужные данные, его сценарий править не требуется.

P. S. Проект, кстати, не мой :)

Добавлено (17 Февраль 2010, 01:59)
---------------------------------------------

Quote (DEMBEL)
а консольную команду REG

Quote (ICQ - dgilmour)
reg это не команда, а утилита, и что еще важнее, впервые она была включена в ХР, так что в 2000 не прокатит.



Вечная память Андрею Сергееву!
 
Alex3AДата: Среда, 17 Февраля 2010, 03:18 | Сообщение # 12
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (YURIY)
Не нужно совсем.

У него в проекте он явно не вложен, переписать скрипт это одно, а вытянуть из другого проекта нужный файл, и вложить в свой другое.
Quote (FreeStyler)
Бог с ней! Я не программист, чтобы писать мега скрипты regread2.vb

Тебе надо вытянуть из примера этот файл (regread2.vbs) и вложить в свой проект.
Запустив пример, найди его в темпе скопируй, и вложи в свой проект.
Без его наличия в твоем проекте скрипт работать не будет.
 
YURIYДата: Среда, 17 Февраля 2010, 05:05 | Сообщение # 13
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Alex3A)
У него в проекте он явно не вложен

Я просто понадеялся, что все операции производились в оригинальном проекте.

Quote (Alex3A)
Тебе надо вытянуть из примера этот файл (regread2.vbs) и вложить в свой проект. тра-та-та

Ради Бога, харе! Выше ссылка на плагин.



Вечная память Андрею Сергееву!
 
Alex3AДата: Среда, 17 Февраля 2010, 13:32 | Сообщение # 14
Друг клуба ММВ
Группа: Проверенные
Сообщений: 2646
Репутация: 39
Награды: 11
Статус: Offline
Quote (YURIY)
Ради Бога, харе! Выше ссылка на плагин.

Плагин хорош только тогда когда знаеш как с ним боротся.
Quote (FreeStyler)
Для обычных пользователей вопрос так и остаётся открытым

Вопрос остается открытым только для пользователей не желающих изучать предмет
своей нужды. ммв расчитана и на таких, однако пределы ее возможностей ограничены,
и для получения чего то, что она не делает, необходимо получить дополнительные
знания. В приведенном тобою фрагменте кода, имеются коментарии, которые отвечают
на твои вопросы, расказывая как работает этот скрипт.
** формируем командную строку для запуска внедренного vbs-скрипта
говорит о том что в твоем проекте должен быть внедрен файл regread2.vbs,
который тебе надо туда просто тупо вложить, не вникая в его содержимое, и
указать путь в реестре к нужному параметру. Я думаю, что ты в состоянии сообразить,
что если не будет вложенного файла скрипта, или ты укажеш не существующий, в твоем
реестре путь, то и параметра никакого ты не получиш. Для того что бы корректно написать путь к параметру, найди в редакторе реестра нужную запись и экспортируй
ее в файл, затем открой его в блокноте и скопируй путь, это тебя обезопасит от
ошибок при вводе пути с клавы. Буквы А и A выглядят одинаково, и ты будеш долго
упиратся пока не поймеш что они разные. :D

 
  • Страница 1 из 1
  • 1
Поиск: