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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
countryman

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще вопрос.
Нужно следующее:
1. Проверить указанную папку на наличие определенного файла (допустим, 1.дат)
2. Если файл в наличии, проверить дату создания файла
3. Если дата создания отличается от нужной, тогда... допустим, выход из приложения
 
Наваял такой код:
 
1. found = File.Find (_SourceFolder, "1.dat", true, false, nil, nil);
2. if (Application.GetLastError() == 0)  then
3. attrib = File.GetAttributes(_SourceFolder .. "\\1.dat");
4. CrDate = attrib.CreationDate;
5. NDate = "20070331";
6.    if strCreationDate ~= NDate
7.    then
8.    Application.Exit ();
9.    end
10. else  
11. Application.Exit ();
14. end
 
Выдает ошибку:  
line 4 attempt to index global 'attrib' (a nil value)
Я неправильно пишу команду определения даты создания файла?
Или в чем тут загвоздка?
    

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
countryman
У тебя скорее всего не найден файл.
Цитата:
1. found = File.Find (_SourceFolder, "1.dat", true, false, nil, nil);  
2. if (Application.GetLastError() == 0)  then
Этот код возвратит GetLastError() == 0 в любом случае, найден файл или нет, потому что не найденный файл это результат, а не ошибка дествия File.Find. Для проверки существования файла используй File.DoesExist.

Цитата:
4. CrDate = attrib.CreationDate;  
5. NDate = "20070331";  
6. if strCreationDate ~= NDate  
Это тоже работать не будет, т.к. сравниваешь разные форматы. См. справку.
 
Пример:
Код:
cFileName = _SourceFolder.."\\1.dat";
NDate = "2007-03-31";  
lExist = File.DoesExist(cFileName);
if (lExist) then
    tAttr = File.GetAttributes(cFileName);
    cCreationDateISO = tAttr.CreationDateISO;
    if (String.Left(cCreationDateISO, 10) ~= NDate) then
        Application.Exit(0);
    end        
else
    Application.Exit(0);
end

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Спасибо!
Все отлично работает!

Всего записей: 22 | Зарегистр. 22-02-2007 | Отправлено: 14:27 02-04-2007
DenVl



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

Код:
 
-- get the drives on the system
tblDrives = Drive.Enumerate();
 
-- walk the table to process each drive
for n, DriveLetter in tblDrives do
    --Get the drive type
    nType = Drive.GetType(DriveLetter)
    
    -- and add the information to the listbox.
    if nType == 5 then
                tCD = {DriveLetter}
            end
end
 

Таблицу CD приводов я вообще правильно сооставил?

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



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

Цитата:
Таблицу CD приводов я вообще правильно сооставил?

Нет. У тебя в таблицу добавляется только один элемент, который перезаписыватся в цикле. По этому у тебя в меню только один привод.

Код:
tCD = {};
tDrive = Drive.Enumerate();
if (tDrive) then
    for n, cDrive in tDrive do
        nType = Drive.GetType(cDrive);
        if (nType == DRIVE_CDROM) then
            tCD[n] = cDrive;        
        end
    end
end

или

Код:
tCD = {};
tDrive = Drive.Enumerate();
if (tDrive) then
    nn = 1;
    for n, cDrive in tDrive do
        nType = Drive.GetType(cDrive);
        if (nType == DRIVE_CDROM) then
            tCD[nn] = cDrive;        
            nn = nn + 1;
        end
    end
end

В обоих вариантах получаем таблицу CD-приводов, разница заключается в индексах этих таблиц. Второй вариант предпочтительнее, т.к. в отличие от первого имеет упорядоченные индексы начиная с 1.
 
P.S. В примере добавления CD-приводов в подменю, можно использовать любой вариант.

Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 22:26 02-04-2007 | Исправлено: tavria2, 01:00 03-04-2007
DenVl



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

Цитата:
attempt to index global 'tCD' (a string value)

P.S.Опять баги в сборке наверно.

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



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

Цитата:
Хм...не отрабатывает...выдает ошибку:

Sorry, писал по памяти - забыл создать пустую таблицу .
Код поправил.  

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



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

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



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
Еще если можно небольшой вопросик...
Необходимо чтоб при клике на выбранный привод в Menu Bar рядом ставилась галочка (Checked) и буква выбранного привода заносилась в реестр...
Н-да получился несовсем маленький вопросик, но...помоги опять

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



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

Цитата:
Необходимо чтоб при клике на выбранный привод в Menu Bar рядом ставилась галочка

Как ты хочешь помечать приводы? Что бы помечался только один привод, по принципу радио кнопок или каждый независимо от состояния других?

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто подскажет, как организовать самоуничтожение исполняемого файла?
 
Добавлено:
Вопрос касается случая, когда исполняемый файл находится на винчестере.
Использовал команду File.DeleteOnReboot (_SourseFilename)
Не хочет.
Как еще можно поступить?

Всего записей: 22 | Зарегистр. 22-02-2007 | Отправлено: 14:05 04-04-2007
GOOSE



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

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 14:55 04-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
countryman
_SourseFilename содержит только имя файла без пути, откуда система может знать где лежит файл для удаления?! Используй совместно с _SourceFolder, например: _SourceFolder.."\\".._SourceFilename.
Это все справедливо, если сборка проекта была в режиме "Hard Drive Folder". Для режима сборки "Web/Email executable" необходимо получить путь откуда был запущен SFX-архив.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А каким образом можно это сделать?
В смысле, как можно получить этот путь?
Я остановился на таком варианте:
Пользователь запускает исполняемый файл, компилированный в режиме "Web/Email executable"
Этот файл при запуске копирует экзешник №2 в папку Н и прописывает куда-то (кстати, куда?) удалить экзешник №2 после перезагрузки.
Потом исполняемый файл запускает экзешник №2 и вырубается.
Экзешник №2 удаляет "исполнившийся" файл, делает свое дело...в общем, пользователь из него выходит сам.
В итоге после перезагрузки компа все "мертвы", как в фильмах Гая Ричи.
Но в связи с этим вопрос: как узнать путь к исполняемому файлу??? То, о чем писал tavria2
З.Ы. Извиняюсь за псевдонимы файлов. Надеюсь, я более-менее смог изложить свою мысль.
Что скажете??  Реально это?
 
Или такой вариант:
запускается файл №1, который делает.. в общем, делает, что надо пользователю, а когда пользователь выходит из программы, запускает файл №2, который собственно, и удаляет файл №1.
Просто интересно, почему командой "File.DeleteOnReboot" файл не может удалить сам себя? Он ведь после перезагрузки все равно не будет работать? в смысле, его не успеют запустить.
 
Добавлено:
Но все-таки, самый главный вопрос: КАК передать путь из одного файла в другой??? То есть, передать _SourceFolder\\SourceFilename файла №1 в файл №"???
 
Добавлено:
И еще: возможно ли загрузить рисунок в веб-обьект? То есть, проект имеет встроенный веб-обьект, туда нужно загрузить рисунок откуда-то издали, из другой папки? Если это возможно, то удастся ли реализовать печать веб-обьекта (рисунка)?
Очень важно, чтобы пользователь не догадался, что рисунок "неместный", и чтобы напрочь отсутствовала возможность этот рисунок сохранить.
 
Добавлено:

Извините за шум, с вэб-обьектом и рисунком уже все сделал....
Но, если можно, все-таки подскажите, как передать путь _SourceFolder\\_SourceFilename файла №1 в файл №2?

Всего записей: 22 | Зарегистр. 22-02-2007 | Отправлено: 16:36 04-04-2007 | Исправлено: countryman, 16:43 04-04-2007
tavria2



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
countryman
Удаление SFX-архива после перезагрузки:
Код:
tArgs = _CommandLineArgs; -- параметры командной строки  
if (Table.Count(tArgs) > 0) then -- есть переданные параметры  
    if (String.Find(tArgs[Table.Count(tArgs)], "SFXSOURCE:", 1, false) ~= -1) then -- приложение является SFX-архивом  
        -- полный путь + имя файла SFX-архива (в таблице параметров всегда будет последним)  
        cPathSFX = String.Right(tArgs[Table.Count(tArgs)], String.Length(tArgs[Table.Count(tArgs)]) - 10);  
        File.DeleteOnReboot(cPathSFX); -- удаление файла после перезагрузки
    end
end

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



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Чёт я протупил
Посчитал, что во время работы нужно удалить файл... сорри...

----------
AutoPlay Media Studio по-русски!
Русский хелп AutoPlay Media Studio

Всего записей: 903 | Зарегистр. 17-10-2001 | Отправлено: 22:52 04-04-2007
countryman

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
Этот код удаляет приложение, которое его запустило? Или же его нужно вписать в файл №2? (в моем случае)

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



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

Цитата:
Этот код удаляет приложение, которое его запустило?
Да.

Цитата:
Или же его нужно вписать в файл №2? (в моем случае)
файл №2 вообще не нужен.

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

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
tavria2
Спасибо!
Буду сейчас экспериментировать..
 
Добавлено:
Кстати, воспользовался советом User Guide и решил сделать выход из приложения через   Window.Close().
 
Гляньте, кусочек кода:
 
if times_run > times_allowed then
    Dialog.Message("Увы!", "Невозможно запустить файл", MB_OK, MB_ICONSTOP, MB_DEFBUTTON1);
    Window.Close(WndHandle, CLOSEWND_TERMINATE);
end
 
Естественно, это работать не хочет.
Хотел спросить:
Как правильно написать это злосчастное WndHandle?
А то в руководстве об этом скромно умалчивают, и в примерах этого нету.
Писал сюда имя приложения, не работает.. Моя безграмотность меня когда-нибудь убьет

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



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

Цитата:
Как правильно написать это злосчастное WndHandle?

Код:
WndHandle = Application.GetWndHandle();


Всего записей: 1127 | Зарегистр. 19-01-2005 | Отправлено: 17:47 05-04-2007 | Исправлено: tavria2, 17:48 05-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