Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Закладки » Indigo Rose AutoPlay Media Studio (часть 1)

Модерирует : gyra, Maz

Widok (03-09-2007 23:10): лимит страниц. продолжаем здесь  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 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

   

maykop3000



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Для ленивых и нетерпеливых обзор темы aka FAQ
 
Где почитать:
------------------------
Для начала читаем статьи: тут раз илитут раз и два и три
Скриптовый язык LUA (англ) На русском здесь,  еще тут и  тут
Видео-уроки (анг)  
 
 
Где поживиться:
----------------------------
Видео-уроки (Flash) от производителя (англ)
Тоже официальное видео (англ)
Бесплатные шаблоны (маски) для окон ваших приложений (англ)
"Подарки к Рождеству" на оффсайте (англ)
Плагин LuaCOM (англ)
Примеры для начинающих (англ)
Неплохие примеры, библиотеки (англ)
Еще примеры, один из самых активных юзеров на оффоруме (англ)
Плагины и библиотеки (не все free) (англ)
Еще плагины (англ)
Собрание уроков (иногда с русскими объяснениями)  
 
Где найти ответы на вопросы:
------------------------------------
Проблема с путями при создании приложения .EXE и ресурсами на CD от Reineke
Запуск файлов из Web объекта
Реализация Play-листов для Винампа от BOObastis
Виды путей, используемых в AMS от GOOSE
Таблица дисков системы от Lexua
Вывод HTML отчета с использованием SQLite плагина от IndigoRose
Используем таймер
Полноэкранный режим для приложения
Показ\скрытие объектов по действиям мыши
Последовательный запуск нескольких файлов
Запуск WinRARa для распаковки архивов от Reineke
Изменяем скроллинг ListBox-у от GOOSE
Изменяем курсор в приложении от GOOSE
Перенос строки во всплывающей подсказке от GOOSE
Изменяем иконку приложения от Lexua
Включение\отключение фоновой музыки кнопкой
Отправка данных из форм по e-mail от GOOSE
Запускаем экзешник по информации из реестра от Lexua
Утилита для защиты авторанов
Из окна в полноэкранный режим и обратно
Для тех, у кого русский проект с "кракозяблами"
Выделение и копирование в буфер текста\части текста от GOOSE
Работаем с запароленными архивами от GOOSE
Работаем с объектом дерева от GOOSE
Проигрвывание MP3 из ListBox-а подряд от UMode
Простой пример бегущей строки от GOOSE
И более красивый от tavria2
Ряд вопросов и ответов по созданию меню для DVD от tavria2
 
------------------------
Шапка исправлена. Актуально на 3.08.06 GOOSE
------------------------
 
Разработчиков autorun'ов и графических дизайнеров приглашаем посетить проект шаблонов для Autoplay Media Studio:
http://ams-templates.com

Всего записей: 544 | Зарегистр. 24-09-2002 | Отправлено: 23:32 05-12-2002 | Исправлено: Maz, 12:33 25-09-2017
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2

Цитата:
Что бы помечался только один привод, по принципу радио кнопок

Да именно так.

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 19:20 05-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl
Полный код:
Код:
tCD = {}; --создаем пустую таблицу CD-приводов
tDrive = Drive.Enumerate(); --получаем таблицу приводов
if (tDrive) then --если в системе есть приводы
    nn = 1; --индекс привода
    for n, cDrive in tDrive do
        nType = Drive.GetType(cDrive); --тип привода
        if (nType == DRIVE_CDROM) then --если привод имеет тип CD
            tCD[nn] = cDrive; --добавляем привод в таблицу CD-приводов        
            nn = nn + 1; --наращиваем индекс
        end
    end
end
 
-- Добавляем/заменяем подменю для отображения CD-приводов
function AddItem(cText, nID, lChecked, lEnabled, nSubMenu)
    tblMenu[1].SubMenu[1].SubMenu[nSubMenu] = {}; -- создаем пункт подменю
    tblMenu[1].SubMenu[1].SubMenu[nSubMenu].Text = cText; -- текст пункта подменю
    tblMenu[1].SubMenu[1].SubMenu[nSubMenu].ID = nID; -- идентификатор пункта подменю
    tblMenu[1].SubMenu[1].SubMenu[nSubMenu].Checked = lChecked; -- отмеченный/неотмеченный пункт подменю
    tblMenu[1].SubMenu[1].SubMenu[nSubMenu].Enabled = lEnabled; -- активный/неактивный пункт подменю
end
 
cCheckDrive = Application.LoadValue("MyApp", "Drive"); -- читаем из реестра выбранный привод
tblMenu = Application.GetMenu(); -- получаем структуру меню приложения
if (tCD) then -- если есть CD-приводы            
    tblMenu[1].SubMenu[1].SubMenu = {}; -- создаем пустое подменю
    nItem = 1; -- порядковый номер пункта подменю
    for n, cText in tCD do -- в цикле создаем пункт подменю для каждого CD-привода
        nID = 1000 + nItem; -- уникальный идентификатор для каждого пункта подменю
        if (cText == cCheckDrive) then -- если привод выбран
            AddItem(cText, nID, true, true, nItem); -- заполняем структуру пункта подменю
        else
            AddItem(cText, nID, false, true, nItem); -- заполняем структуру пункта подменю
        end
        nItem=nItem+1; -- наращиваем порядковый номер пункта подменю
    end    
    Application.SetMenu(tblMenu); -- сохраняем меню
end

Событие On Menu:
Код:
nID = e_ID; -- сохраняем значение ID пункта
function g_OnUpdateMenuCheck(e_ID, e_ItemInfo)
    if (e_ID == nID and nID > 1000) then -- если выбранный пункт принадлежит CD-приводу
        return true; -- помечаем выбранный пункт
    elseif (e_ID ~= nID and nID > 1000) then -- если невыбранные пункты CD-приводов
        return false; -- снимаем метки
    end
end
 
if (e_ID > 1000) then -- если выбранный пункт является CD-приводом
    Application.SaveValue("MyApp", "Drive", e_ItemInfo.Text); -- сохраняем его в реестре
end


Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 21:22 05-04-2007 | Исправлено: tavria2, 11:59 06-04-2007
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
Даа.., но почему то када я выираю какой-нидь привод из подменю, то все меню (кроме SubMenu[1], из которого выбираются приводы) становится выключенным. Что не так?
Но при повторной загрузке приложения все становится нормально (галочка стоит напротив выбранного привода и все активно).
P.S. Если я коряво объяснил суть проблемы, то скрин здеся

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 22:13 05-04-2007 | Исправлено: DenVl, 22:15 05-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl
Не знаю, мне такого эффекта получить не удалось. Выложи проект - посмотрю.

Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 23:57 05-04-2007
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
ну можно и не выкладывать:
Событие On Show:

Цитата:
Полный код:
CD = {}; --создаем пустую таблицу CD-приводов  
tDrive = Drive.Enumerate(); --получаем таблицу приводов

Событие On Menu:

Цитата:
Событие On Menu:
nID = e_ID; -- сохраняем значение ID пункта  
function g_OnUpdateMenuCheck(e_ID, e_ItemInfo)
...

 
Даже при удалении всех объектов со страницы и оставляя только эти два кода, эффект тот же...
 
 

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 00:28 06-04-2007 | Исправлено: DenVl, 00:34 06-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl
Даже не знаю почему у тебя блокируется меню, ни каких операций с активацией/блокировкой меню не выполняется. В ходе эксперимента обнаружил некоторые глюки - код нуждается в доработке...

Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 01:10 06-04-2007
countryman

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Возможно ли отключить вызов контекстного меню правой кнопкой мыши над вэб-обьектом??

Всего записей: 22 | Зарегистр. 22-02-2007 | Отправлено: 13:58 06-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl
Динамическое создание подменю, содержащее CD-приводы.
DynamicSubMenuWithCD.apz (10 кб).

Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 19:06 06-04-2007
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Респект и уважуха tavria2. Все отлично отрабатывает...с проблемами покончено , кром одной...
Пытаюсь написать функцию, которая будет получать метку выбранного привода:
В Global Functions добавил:

Код:
function DriveLabel()
cCheckDrive = Application.LoadValue("MyApp", "Drive");    
DrivesCD();
        if (DrivesCD()) then
            for n, cText in tCD do
                 if (cText == cCheckDrive) then
                     DriveInfo = Drive.GetInformation(cText);
                         if (tDriveInfo) then
                             cLabel = tDriveInfo.Label;
                             Label.SetText("Label1", cLabel);
                         else
                       Dialog.Message("Ошибка", "Диск не вставлен", MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);

                  end
                  end
             end
         end
end

On Click "Button1"

Код:
DriveLabel();

В приводы вставлены диски. При нажатии на кнопку отображается метка выбранного привода в "Label1"; если выбрать привод без диска, то в  "Label1" ничаво не отображается (а я думал что в этом случае cLabel == ""). Как узнать что диска в выбранном приводе нет?

Цитата:
Как узнать что диска в выбранном приводе нет?

С этим я сообразил...исправил... А что вызывать в этой функции для получения метки привода  с диском?

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 21:26 06-04-2007 | Исправлено: DenVl, 23:34 06-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl
Цитата:
function DriveLabel()
cCheckDrive = Application.LoadValue("MyApp", "Drive");    
DrivesCD();
        if (DrivesCD()) then
            for n, cText in tCD do
                 if (cText == cCheckDrive) then
                     tDriveInfo = Drive.GetInformation(cText);
                         if (tDriveInfo) then
                             cLabel = tDriveInfo.Label;
                             Label.SetText("Label1", cLabel);
                         else
                             Label.SetText("Label1", "No Disk");

                         end
                  end
             end
         end
end

 
Добавлено:
пока писал, ты уже сам все сделал
 
Добавлено:

Цитата:
А что вызывать в этой функции для получения метки привода  с диском?
cLabel = tDriveInfo.Label; - а это что?

Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 23:38 06-04-2007 | Исправлено: tavria2, 23:44 06-04-2007
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
Да, намудрил немного. Немного подправил:

Код:
function DriveLabel()
    cCheckDrive = Application.LoadValue("MyApp", "Drive");  
    DrivesCD();
        if (DrivesCD()) then
            for n, cText in tCD do
                if (cText == cCheckDrive) then
                    tDriveInfo = Drive.GetInformation(cText);
                    error = Application.GetLastError();  
                         if (not tDriveInfo) then
                             Dialog.Message("Ошибка", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);          
                         end
                end
            end
       end
end

On Click "Button1"
Если нет ошибок, то будет выполняться код (вместо многоточия), если же есть, то появится соответствующее сообщение.

Код:
DriveLabel();
if (error ==0) then
 ...
end  

 
И еще:

Код:
path = _SourceFolder.."\\prog1.exe";
FileRun = File.Run(path, cCheckDrive.." /U", "", SW_SHOWNORMAL, false);

Файл запускается, но не выполняются параметры, в этом случае программа prog1.exe возвращает 1. Можно ли узнать это (что она возвратила)?
 
   

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 00:28 07-04-2007 | Исправлено: DenVl, 00:31 07-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl

Цитата:
Файл запускается, но не выполняются параметры

Я ни чего не могу сказать по этому поводу т.к. я не знаю какие параметры этот файл способен принимать.

Цитата:
Можно ли узнать это (что она возвратила)?  

Чесно говоря вообще ничего не понял.

Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 00:38 07-04-2007
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
Из хелпа к программе:

Цитата:
Example: Prog1.exe F: /U (F: - буква виртульного привода)
Returns drive letter when success or 1 when failure occurs.  

Надо узнать, что она возвратила: букву диска или 1?
 
 
 
Добавлено:
Незнаю важно или нет, но прога работает только в MS-DOSе
 
Добавлено:
К примеру, мы же не можем же демонтировать образ, ссылаясь на физический привод (если он вдруг был выбран из подменю), но прога то все равно запустится, просто ничаво не сделает и возвратит как код ошибки 1, если же мы попытались демонтировать образ, смонтированный в вирт. приводе, то будет возвращена буква диска,  в моем случае F:
...если я конечно все правильно понимаю

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 00:51 07-04-2007 | Исправлено: DenVl, 01:06 07-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl
Для начала, у тебя не соответствует формат параметра диска: требуется "F:", а у тебя "cCheckDrive" вернет в формате "F:\". Убери завершающий слэш:
cCheckDrive = String.Left(cCheckDrive, String.Length(cCheckDrive) -1);

Цитата:
Надо узнать, что она возвратила: букву диска или 1?

Exe файлы обычно возвращают числовой код ошибки завершения программы, каким образом возвращают символьные параметры - я незнаю, возможно используют системные переменные, о которых должно упоминаться в Help'е. Тут я тебе не советчик.
 
Добавлено:

Цитата:
Незнаю важно или нет, но прога работает только в MS-DOSе  

В чистом MS-DOSе или в сеансе MS-DOS (в консольном окне)?
 
Если, после выполнения программы ты видишь результат на экране консоли, то результат можно запихнуть в текстовый файл, путем перенаправления устройства вывода, например:  Prog1.exe F: /U>result.txt, а затем перегнать файл в строку и из нее добывать результат.

Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 01:18 07-04-2007 | Исправлено: tavria2, 01:31 07-04-2007
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
К сожалению в чистом MS-DOSе, так что результата на экране консоли увидеть не удастся.

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 13:34 07-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl
Так, что после выполнения программы, на экран не выводится результат? Если программа не секретная выложи ее, я посмотрю или дай ссылку на нее.

Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 13:37 07-04-2007 | Исправлено: tavria2, 13:41 07-04-2007
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
Посмотри в личку

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 18:57 07-04-2007 | Исправлено: DenVl, 18:59 07-04-2007
NightW0lf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Неподскажите как сделать так чтобы происходила проверка определенного ключа в реестре [например - HKEY_LOCAL_MACHINE, "Software\\7-Zip", "Path"] и если этого ключа нет то тогда определенная кнопка [например - label_install] то она будет АКТИВНА, а если есть то НЕ АКТИВНА и самое главное чтобы эта проверка происходила постоянно, а не при следущем запуске и [или] при нажатии какой либо кнопки.
 
У меня есть пример кода, НО он работает то от нажатия кнопки.
 
Код у кнопки установить

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 14:07 09-04-2007
DenVl



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
NightW0lf
Поставить этот код на On Preload страницы (при загрузке страницы будет проверяться наличие ключа)

Всего записей: 58 | Зарегистр. 01-07-2006 | Отправлено: 17:33 09-04-2007
NightW0lf



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
DenVl

Цитата:
Поставить этот код на On Preload страницы (при загрузке страницы будет проверяться наличие ключа)

Я немного код подправил!
Код
 
Да я поместил этот код на страницу On Preload, НО все равно авторан не видит изменений с ключом до следующего запуска [работает только при запуске], а мне надо что бы постоянно шла проверка, а не со следующим запуском.

Всего записей: 479 | Зарегистр. 08-11-2006 | Отправлено: 19:26 09-04-2007
   

Страницы: 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

Компьютерный форум Ru.Board » Компьютеры » Программы » Закладки » Indigo Rose AutoPlay Media Studio (часть 1)
Widok (03-09-2007 23:10): лимит страниц. продолжаем здесь


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru