Ru-Board.club
← Вернуться в раздел «Программы»

» Autoplay Media Studio

Автор: tavria2
Дата сообщения: 25.09.2006 16:10
GOOSE

Цитата:
нужно красиво проверить, есть ли в системе виртуальный диск "Z".

Если виртуальный диск типа SUBST, то можно поиграться с "меткой тома" с помощью системной команды "label". Для виртуального диска IMHO нельзя изменить "метку тома".
Автор: GOOSE
Дата сообщения: 25.09.2006 19:00
tavria2

Цитата:
Если виртуальный диск типа SUBST

Именно он Мне нужно проверить отработку этой команды...
Работать, то она работает, но вот проверить не помешает, тем более, что не у всех ХР стоит

Цитата:
можно поиграться с "меткой тома" с помощью системной команды "label"

А подробнее можно? ЗЫ Если не в лом, конечно. Просто дома экспериментирую, на работе проекта нет... не проверить.
Автор: tavria2
Дата сообщения: 25.09.2006 21:49
GOOSE

Код: -- Список устройств
tDrives = Drive.Enumerate();
for n, cDrive in tDrives do

-- Выделяем из списка только жесткие диски
if (Drive.GetType(cDrive) == DRIVE_FIXED) then
tDriveInfo = Drive.GetInformation(cDrive);
-- информация о диске
cLabel = tDriveInfo.Label; -- получаем метку тома
-- новая метка тома "temp"
File.Run("label.exe", String.Replace(cDrive, "\\", "", false).." temp", "", SW_MINIMIZE, true);
tDriveInfo = Drive.GetInformation(cDrive);
-- информация о диске
-- если новая метка тома не совпадает с меткой до изменения - значит это не виртуальный диск

if (cLabel ~= tDriveInfo.Label) then
-- возвращаем исходную метку тома
File.Run("label.exe", String.Replace(cDrive, "\\", "", false).." "..cLabel, "", SW_MINIMIZE, true);
else
Dialog.Message("Сообщение", "Виртуальный диск - "..cDrive);
end
end
end
Автор: GOOSE
Дата сообщения: 25.09.2006 22:07
tavria2
Нормально! Я тоже в этом направлении думал.
Только у меня получалось так же громоздко...
Короче, решил сделать проще:

Код:
-- проверяем созданный диск
res_check_drive = Drive.GetInformation("Z:");
if res_check_drive ~= nill then
res_drive_mess = Dialog.Message("Внимание!", "Виртуальный диск Z создан!", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
if (res_drive_mess == IDOK) then

        -- отключаем виртуальный диск
        cmd_command_subst_off = "subst Z: /D"
        res_util_subst_off = File.Run(_SystemFolder.."\\cmd.exe", "/c" ..cmd_command_subst_off, "", SW_MINIMIZE, true);

     -- проверяемся на ошибки
        error = Application.GetLastError();
       -- если есть ошибки, выводим сообщение
        if (error ~= 0) then
         Dialog.Message("Ошибка!", _tblErrorMessages[error], MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
         end
    end
else
Dialog.Message("Внимание!", "Нифига не получилось, диск не создан.", MB_OK, MB_ICONINFORMATION, MB_DEFBUTTON1);
end

Автор: tavria2
Дата сообщения: 25.09.2006 22:55
GOOSE
А если так:

Код: File.Delete(_TempFolder.."\\~subst.txt", false, false, false, nil);
cTextBat = "subst.exe > ~subst.txt";
TextFile.WriteFromString(_TempFolder.."\\subst.bat", cTextBat, false);
File.Run(_TempFolder.."\\subst.bat", "", _TempFolder, SW_MINIMIZE, true);
cVDisks = TextFile.ReadToString(_TempFolder.."\\~subst.txt");
Dialog.Message("Виртуальные диски", cVDisks);
Автор: GOOSE
Дата сообщения: 25.09.2006 23:48
tavria2

Цитата:
Если ты точно знаешь какой символ присвоен виртуальному диску

Да, я точно знаю, какой диск я создаю

Цитата:
Можно подробнее, для чего это нужно...

Хотелось проверить файлы после распаковки... просто у меня юзер сам сможет менять состав файлов для инсталляции... вот и захотелось проверить, все ли нужные присутствуют

Логика:
- распаковываются архивы в выбранную директорию
- проверяемся, на месте ли нужное файло
- продолжаем...

Автор: tavria2
Дата сообщения: 26.09.2006 00:18
GOOSE
Если это zip-архив, то можно получить листинг файлов с путями из архива с помощью Zip.GetContents и проверить по этим путям наличие файлов в папке распаковки.
Автор: GOOSE
Дата сообщения: 26.09.2006 01:07
tavria2

Цитата:
можно получить листинг файлов с путями из архива с помощью Zip.GetContents

Да, похоже, это единственный вариант.
Потом построчно файл сравнивать придется.
Автор: tavria2
Дата сообщения: 26.09.2006 08:34
GOOSE

Код: cFullNameZip = "C:\\install.zip";   -- имя zip-файла с путем
cPathExtract = "D:\\ExtractFolder\\";                         -- путь к папке развернутого архива
cFullNameList = "D:\\ExtractFolder\\ListFiles.txt";            -- имя файла листинга с путем

tListFiles = Zip.GetContents(cFullNameZip, false);           -- таблица файлов из архива
TextFile.WriteFromTable(cFullNameList, tListFiles, false);  -- создаем текстовый файл листинг
-- Проверка комплектности файлов
tListFiles = TextFile.ReadToTable(cFullNameList);             -- получаем таблицу файлов из файла листинга
for n, cFullFileName in tListFiles do
    if (File.DoesExist(cPathExtract..cFullFileName)==false) then    
        Dialog.Message("Внимание", "Отсутствует файл "..cFullFileName, MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);
    end
end
Автор: Vladelen
Дата сообщения: 26.09.2006 08:48
Кто сможет мне подсказать - в 4 версии при размещении в меню графического файла в виде небольшого окошечка в нём отображалась уменьшенная картинка рисунка, а теперь в 5 и 6 версии - одни разводы... может где что-то надо подстроить?
Автор: GOOSE
Дата сообщения: 26.09.2006 11:56
tavria2 -

Вчера (точнее уже сегодня ) не добил, пошел спать.
Красивое решение. Да и правильно: не писать же такую тучу файлов в код!
ОК, сделаем с файликом
Ты меня избавил от "немного геммороя"
Спасибо!
Автор: sls
Дата сообщения: 27.09.2006 10:27
Проинтегрировал сервис пак 2-ой в Офис 2003, и захотелось чего-нить красочного для авторана. Ну думаю, попробую сотворить что-нить "а ля дядька ЦЯ"... Сказано сделано. Но дело в том, что даже при попытке хотя бы повторить то как сделано дядькой ЦЯ почему-то размер выходного autorun.exe на 2.5 мега... При этом директория AutoPlay весит 600 килобайт, и что самое интересное из этих 600 400 занимает autorun.cdd. То есть графика и пара звуков 200 килобайт, а в итоге распухло все 2.5Мега + 600Кило получается 3.100Мега. Вобщем суть вопроса вот в чем, как и что можно там оптимизировать и как это сделать ? ... У дядьки ЦЯ например autoran.exe 1.3Мега, а все остальное 266Кило. Где и с чем ошибаюсь ? Делал все просто... создал проект без ничего, поместил фоновую картинку котрую 3 раза продублировал так как по высоте мала. Размер проекта Small. Помемтил один параграф и один "лэйбл" добавил 3 кнопочки для инсталла офиса, для инсталла фронтпейджа, и для выхода. И такая банальная вещь - а так много по размеру. Подскажите плиз в чем может быть дело.
Автор: Lexua
Дата сообщения: 27.09.2006 11:19
sls
В каком AMS делаешь? Все дело в том, что AMS не умеет оптимизировать свои ресурсы и в авторан включаются все встроенные функции программы, независимо от того использушь ты их в своем проекте или нет. Поэтому точно такой же авторан, сделанный в AMS5 будет весить меньше, нежели скомпилированный в AMS6.
Автор: sls
Дата сообщения: 27.09.2006 11:54

Цитата:
Поэтому точно такой же авторан, сделанный в AMS5 будет весить меньше, нежели скомпилированный в AMS6.

Да в 6.0.2.0 делаю. Вот засада, хотя конечно из-за 3 мегобайт не вешаться же. Но представляю сколько "грязи" туда он заносит.
Автор: Reineke
Дата сообщения: 27.09.2006 12:04
Для дядьки Ця я авторан делал ... на 5 версии
Автор: sls
Дата сообщения: 27.09.2006 12:53

Цитата:
Для дядьки Ця я авторан делал ... на 5 версии


Тоже попробую на 5-ой. Посмотрим, что получится.
Автор: sls
Дата сообщения: 27.09.2006 16:18
Reineke
А не расскажешь как избавиться все-таки от "загрязненности файлов". Не могу понять теперь autorun.exe 800Килобайт, но при этом autorun.cdd те же 413 килобайт, никак не могу понять почему ? Может я неверно как-то директории добавляю в проект ? Я просто скопировал в CD_Root директрию CD1 и директорию CD2. Может как-то иначе нужно добавлять файлы и директории в проект ?

Добавлено:
Вопрос снят !!! Разобрался я с этим файлом !
Автор: Kindly
Дата сообщения: 27.09.2006 18:30
Новая версия игрового авторана AutorunForGames v3.0

Уже авторан умеет выполнять поиск при запуске папок с играми и заносить их в игровой список автоматически - указывать каждый раз игру в списке не требуется; данные реестра и пути теперь будут считываться из INI файла; оптимизирована система кнопок - теперь, например, вместо десяти кнопок "Установить" всего лишь одна, которая умеет устанавливать различные игры исходя из выполнения скрипта, аналогично кнопки "Играть" и "Удалить"; описания к играм также будут считываться из внешних текстовых файлов. Практически, потом можно будет создавать собственные скины.

Скачать:
http://rapidshare.de/files/34640617/autorun_for_games.rar.html

GOOSE, спасибо за идеи. Перезальешь? Следующее обновление точно быстро не будет.
Автор: GOOSE
Дата сообщения: 27.09.2006 20:34
Kindly
Перезалью, конечно
Только не сегодня, у меня дома рапида не пашет

Цитата:
спасибо за идеи

Да не за что!
Автор: GOOSE
Дата сообщения: 29.09.2006 08:39

Цитата:
Новая версия игрового авторана AutorunForGames v3.0

Уже авторан умеет выполнять поиск при запуске папок с играми и заносить их в игровой список автоматически - указывать каждый раз игру в списке не требуется; данные реестра и пути теперь будут считываться из INI файла; оптимизирована система кнопок - теперь, например, вместо десяти кнопок "Установить" всего лишь одна, которая умеет устанавливать различные игры исходя из выполнения скрипта, аналогично кнопки "Играть" и "Удалить"; описания к играм также будут считываться из внешних текстовых файлов. Практически, потом можно будет создавать собственные скины.

Скачать:
http://rapidshare.de/files/34640617/autorun_for_games.rar.html

GOOSE, спасибо за идеи. Перезальешь? Следующее обновление точно быстро не будет.


Перезалито. Лежит тут.
Автор: Dgikar
Дата сообщения: 03.10.2006 15:56
Здравствуйте

Подскажите пожалуйста, как работать с Tree ("деревом)" в AutoPlay Media Studio 6.0?
Мне нужно создать менюшку (именно с Tree), чтобы было определение, какой Node выбран, и если это тот Node, который нужен, то выполнялось то, или иное действие.

Зараннее благодарю
Автор: GOOSE
Дата сообщения: 04.10.2006 07:54
Dgikar
В шапке темы есть подсказки
смотри сюда
Будут вопросы, пиши! Только конкретнее формулируй суть, ОК?

ЗЫ С первым постом тебя!
Автор: Dilsh
Дата сообщения: 04.10.2006 10:04
Уважаемый Goose! Просьба подскажите!
Скачал пример win_full_win.apz по ссылке: http://gooseweb.ru/pub/AMS_6/win_full_win.apz
Использовал этот пример в своем проекте, получилось все замечательно, однако после выхода из окна просмотра видео, окно, с которого это видео запускалось, прижимается в левом верхнем углу монитора. Как сделать, что бы стартовое окно оставалось в центре монитора.
Немного разобравшись, в закладке ON CLOSE окна с видеообъектом я прописал скрипт Window.SetPos(Application.GetWndHandle(), 323, 260);
этим самым методом подстановки значений добившись центрирования окна, но после открытия проекта на другом компьютере с другим разрешением и размером монитора окно уходит за пределы центра монитора. Подскажите пожалуйста, что я не так делаю.
Заранее благодарен.
Автор: GOOSE
Дата сообщения: 04.10.2006 11:38
Dilsh

Цитата:
Немного разобравшись, в закладке ON CLOSE окна с видеообъектом я прописал скрипт Window.SetPos(Application.GetWndHandle(), 323, 260);
этим самым методом подстановки значений добившись центрирования окна, но после открытия проекта на другом компьютере с другим разрешением и размером монитора окно уходит за пределы центра монитора. Подскажите пожалуйста, что я не так делаю.

Ошибка состоит в том, что задаете позицию окна в абсолютных величинах, соответственно, при разном разрешении эта позиция находится в разных местах.
Попробуйте сделать так:

- определить разрешение экрана пользователя
- вычислить нужные координаты, исходя из полученных величин (например, разделить на два)
- установить позицию окна, исходя из полученных координат...

ЗЫ Программы под рукой нет, кодом не могу помочь, но насколько помню, аналогичный порядок используется и в самом этом примере (в начале, когда определяются позиции объектов)
Автор: Dilsh
Дата сообщения: 04.10.2006 12:04
Goose, большое спасибо за отзыв. Сейчас буду пробовать.
Просьба, как появится возможность, выложите пожалуйста код, желательно в самом примере. Заранее спасибо.
Автор: Dgikar
Дата сообщения: 04.10.2006 12:13
GOOSE

Спасибо за подсказочку, немного начинаю понимать, но у меня возник, снова вопрос:
ты писал:

-- Получаем значения этого загадочного node
tblTreeProps = Tree.GetNode("Tree1", e_NodeIndex)

-- Если юзер сделал двойной клик, то делаем следующее
if tblTreeProps then

-- Получаем значение поля Item data для выделенного node
ItemData = tblTreeProps.Data;

-- Открываем нужный файл
File.Open("AutoPlay\\Docs\\"..ItemData, "", SW_SHOWNORMAL);

end

1. Что имеется ввиду под "ItemData"?
2. У меня есть несколько пунктов меню, как мне сделать чтобы, при выборе одного из пунктов, в Paragraph выводилась вспомогательная информация о том, или ином файле? Нужно использовать if ... then ... elseif ... then ... end или как?
Автор: Dilsh
Дата сообщения: 04.10.2006 12:24
GOOSE
Сделал таким образом:

display = System.GetDisplayInfo();
Window_Pos = Window.GetPos(Application.GetWndHandle());
Window.SetPos(Application.GetWndHandle(), Window_Pos.Width / 2, Window_Pos.Height / 2);

но программа ругается, что ни так?

Добавлено:
GOOSE

Цитата:
Ошибка состоит в том, что задаете позицию окна в абсолютных величинах, соответственно, при разном разрешении эта позиция находится в разных местах.
Попробуйте сделать так:

- определить разрешение экрана пользователя
- вычислить нужные координаты, исходя из полученных величин (например, разделить на два)
- установить позицию окна, исходя из полученных координат...


Сделал таким образом:
в закладке ON CLOSE окна с видеообъектом я прописал скрипт
display = System.GetDisplayInfo();
Window_Pos = Window.GetPos(Application.GetWndHandle());
Window.SetPos(Application.GetWndHandle(), Window_Pos.Width / 2, Window_Pos.Height / 2);

но программа в процессе просмотра ругается ссылаясь на ошибку в 3-ей строке, что ни так?
Автор: tavria2
Дата сообщения: 04.10.2006 13:21
Dilsh

Цитата:
display = System.GetDisplayInfo();
Window_Pos = Window.GetPos(Application.GetWndHandle());
Window.SetPos(Application.GetWndHandle(), Window_Pos.Width / 2, Window_Pos.Height / 2);
Ты пытаешся смешивать индексы разных таблиц.
display - содержит индексы Width и Height, соотвественно к ним можно обратиться так:
display.Width и display.Width.
Window_Pos - содержит индексы X и Y, соотвественно к ним можно обратиться так:
Window_Pos.X и Window_Pos.Y.
У тебя получается, что ты вызываешь из таблицы не существующий индекс.

Тебе не нужно получать координаты твоего окна, тебе нужны его размеры.
Вместо Window_Pos=Window.GetPos(Application.GetWndHandle());
используй Window_Size=Window.GetSize(Application.GetWndHandle());
Вот исправленный код:
Код: display=System.GetDisplayInfo();
Window_Size=Window.GetSize(Application.GetWndHandle());
Window.SetPos(Application.GetWndHandle(), display.Width/2-Window_Size.Width/2, display.Height/2-Window_Size.Height/2);
Автор: Dilsh
Дата сообщения: 04.10.2006 13:50
tavria2


Цитата:
Ты пытаешся смешивать индексы разных таблиц.
display - содержит индексы Width и Height, соотвественно к ним можно обратиться так:
display.Width и display.Width.
Window_Pos - содержит индексы X и Y, соотвественно к ним можно обратиться так:
Window_Pos.X и Window_Pos.Y.
У тебя получается, что ты вызываешь из таблицы не существующий индекс.


Большое спасибо за помощь, все заработало после того как прописал следующий код:

display = System.GetDisplayInfo();
Window.SetPos(Application.GetWndHandle(), display.Width / 4, display.Height / 4);

Правда сам не понял, почему необходимо делить на 4?

Буду признателен за пояснение.

Всем огромное СПАСИБО!
Автор: tavria2
Дата сообщения: 04.10.2006 14:14
Dilsh

Цитата:
Правда сам не понял, почему необходимо делить на 4?

Так делать не нужно, это чистое совпадение. При других размерах окна ты не получишь желаемого результата.
Принцип центрирования окна:
Получаем размеры экрана с помощью System.GetDisplayInfo() и делим их пополам, в результате получим координаты центра экрана.
Получаем размеры (не координаты) окна нашего приложения с помощью Window.GetPos(Application.GetWndHandle()) и делим пополам.
Устанавливаем позицию нашего окна путем вычитания из координат центра экрана, "половинки" высоты и ширины нашего окна.См. предыдущий пост, там были исправления...

Dgikar
Попробую ответить я.

Цитата:
1. Что имеется ввиду под "ItemData"?

В каждом пункте дерева есть св-ва: "Текст пункта" и "Данные пункта". "Текст пункта" - используется для вывода на экран наименования пункта, "Данные пункта" - здесь хранятся ваши данные привязаные к текущему пункту дерева, но не отображаются в нем. В данных можно хранить например: пути к файлам, подсказки и т.д.
ItemData и есть "Данные пункта".

Цитата:
2. У меня есть несколько пунктов меню, как мне сделать чтобы, при выборе одного из пунктов, в Paragraph выводилась вспомогательная информация о том, или ином файле?

Занеси эту вспомогательную информацию в "Данные пункта", и при выборе пункта выводи ее в Paragraph.

Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

Предыдущая тема: Matrix Screensaver


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.