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

» Autoplay Media Studio

Автор: tavria2
Дата сообщения: 14.10.2006 21:45
Помогите разобраться с API.
Нужно с помощью API конвертировать строку ANSI->OEM (Win->DOS), ниже код который я использую.

Код: cInput = "Тест"; -- входная строка        
cOutput = String.Repeat(" ", String.Length(cInput)+1); -- выходная строка (передаю пробелы для выделения буфера)
errCode = DLL.CallFunction("user32.dll", "CharToOemA", cInput..","..cOutput, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
Автор: GOOSE
Дата сообщения: 14.10.2006 23:36
tavria2
Я практически в этом вопросе ноль
Но мне кажется, что параметры должны быть в кавычках:

Цитата:
Note: Place double-quotes around any parameters that you want passed as NULL-terminated string pointers. Parameters without quotes are passed as LONG integers.
Автор: tavria2
Дата сообщения: 14.10.2006 23:47
GOOSE

Цитата:
Но мне кажется, что параметры должны быть в кавычках:

С синтаксисом разобрался

Код: cInput = "Тест"; -- входная строка
cOutput = String.Repeat(" ", String.Length(cInput)+1); -- выходная строка (передаю пробелы для выделения буфера)
errCode = DLL.CallFunction("user32.dll", "CharToOemA", "\""..cInput.."\",\""..cOutput.."\"", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
Автор: Labus
Дата сообщения: 15.10.2006 02:16
tavria2, хочу пояснит тебе как сейчас у меня дела обстоят с меню (на примере одной кнопки):




Попробовал ввести твою комбинацию, в двух сценариях строчки не активны ...?

Автор: tavria2
Дата сообщения: 15.10.2006 08:50
Labus
Если ты хочешь использовать мой пример - не используй Быстрое действие, в On Click сценария пропиши следующее:

Код: Window.Minimize(Application.GetWndHandle());
File.Run(_SourceFolder.."AutoPlay\\Videos\\Кинг-Конг.avi", "", "", SW_SHOWNORMAL, true);
Window.Restore(Application.GetWndHandle());
Автор: Labus
Дата сообщения: 15.10.2006 12:34
tavria2, что-то у меня не получается.Посмотри крохотный видеоклип(354Кб) по моему примеру:
http://rapidshare.de/files/36810080/AMS.rar.html
Автор: tavria2
Дата сообщения: 15.10.2006 15:05
Labus
Таки есть проблема...
Вообще-то для таких целей предназначен Shell.Execute, но и сним есть проблема - WMP запустился, а BsPlayer - нет. С помощью File.Open - запустились оба плеера.
Запуститься то они запустились, но как контролировать закрытие плеера, что бы потом восстановить свернутое окно? Можно поиздеваться с отслеживанием открытых окон или процессов, но это геморойно, т.к. плееру нужно время, что бы загрузиться и следовательно сразу же после запуска мы не увидим его в списке процессов или открытых окон. А это значит, что прийдется делать Application.Sleep, экспериментально подбирая время спячки и потом по таймеру проверять список открытых окон.
Я предлагаю использовать принудительно WMP, а не плеер по умолчанию и все же запускать через File.Run, т.к. у него есть опция ожидания завершения работы запущенной программы, после чего восстанавливаем окно.

Ну вообщем-то вот:
Код: Window.Minimize(Application.GetWndHandle());
File.Run(_ProgramFilesFolder.."\\Windows Media Player\\wmplayer.exe", "\"".._SourceFolder.."\\AutoPlay\\Videos\\Кинг-Конг.avi\"", "", SW_SHOWNORMAL, true);
Window.Restore(Application.GetWndHandle());
Автор: Labus
Дата сообщения: 15.10.2006 18:40
tavria2 спасибо, всё нормально запускается-сворачивается-разворачивается.
Единственное обратил внимание на тот факт, что программа на доли секунды стала дольше "думать" при переходах в действиях.Я побаловался 5 раз в тестовых предпросмотрах, а затем у меня Windows XP ни с того, ни сего вдруг пяток раз перезагрузилась.Потом какой-то CHKDISK начался, повторная перезагрузка, я от чего-то отказался, нажав любую клавишу и ОС вроде как подзагрузилась.Могло это произойти вследствии изменения сценария ? Только честно.
А если более усложнить задачу, вход в WMP-закрытие меню-выход из WMP-запуск меню.Или хрен редьки не слаще?
Автор: tavria2
Дата сообщения: 15.10.2006 19:17
Labus

Цитата:
Могло это произойти вследствии изменения сценария ? Только честно.

Вряд-ли, по сути ты имитируешь запуск плеера из командной строки - это нормальное поведение. У меня, за время теста, ничего подобного не наблюдалось. А то, что у тебя при старте Windows запускался CHKDISK, это из-за аварийного завершения работы. Стандартная ситуация при файловой системе FAT-32, в NTFS такого не наблюдал.

Цитата:
А если более усложнить задачу, вход в WMP-закрытие меню-выход из WMP-запуск меню.Или хрен редьки не слаще?

А зачем? Лучше скрыть окно перед запуском плеера и показать после закрытия плеера.

Код: Window.Hide(Application.GetWndHandle());
File.Run(_ProgramFilesFolder.."\\Windows Media Player\\wmplayer.exe", "\"".._SourceFolder.."\\AutoPlay\\Videos\\Кинг-Конг.avi\"", "", SW_SHOWNORMAL, true);
Window.Show(Application.GetWndHandle());
Автор: Labus
Дата сообщения: 15.10.2006 20:16
tavria2 OK! Тогда жму тебе руку и в очередной раз говорю слова благодарности,
думаю не в последний
Автор: GOOSE
Дата сообщения: 15.10.2006 20:19
Labus

Цитата:
а затем у меня Windows XP ни с того, ни сего вдруг пяток раз перезагрузилась

Это бывает. Может быть связано с чем угодно Это и память, и блок питания, и температура процессора и вообще кривость системы...
У меня было так, шаманил оооочень долго, потом вдруг стало реже, но я и забил на это шаманство....
Сейчас, периодически, при резкой сильной нагрузке (типа множественных ресурсоемких задач) такое происходит. Неприятно, но жить можно
Автор: Labus
Дата сообщения: 15.10.2006 22:43
tavria2,GOOSE ребята ну а с точки зрения функционала как вы оцениваете
данные сценарии, нормалёк? Необходимость в них присутствует, можете пару ласковых слов сказать?

tavria2 и маленький подвопрос, в коде указан WMP, означает ли это, что при отсутствии оного, навигация с использованием авторана, будет невозможна?Спасибо.


Автор: tavria2
Дата сообщения: 15.10.2006 23:05
Labus

Цитата:
ребята ну а с точки зрения функционала как вы очениваете
данные сценарии, нормалёк? Необходимость в них присутствует, можете пару ласковых слов сказать?

Мне трудно ответить на этот вопрос, т.к. я не щупал проект целиком. На счет ласковых слов..., если проект работает так, как ты хотел - то это уже хорошо.

Цитата:
в коде указан WMP, означает ли это, что при отсутствии оного, навигация с использованием авторана, будет невозможна?

Ну а ты как думаешь? Если его нет, то откуда он появится. Могу посоветовать подобрать небольшой по размеру плеер, вместо WMP и засунуть его в свой проект, ну и естественно в скрипте указать к нему путь.
Автор: GOOSE
Дата сообщения: 16.10.2006 07:53
Labus
Для "пары ласковых" и "оценки функционала" нужно, как и сказал tavria2, "щупать" проект Если он у тебя не коммерческий, то что мешает сделать экспорт и положить куда нибудь эти пару сотен килобайтов?
...мне кажется, что и пользы тебе было бы больше и народу может бы пригодилось...

Лично мне вот совсем не очевидна необходимость "игры с активными окнами"
И насчет WMP, согласен с tavria2 на все сто: кладешь маленький и проверенный тобой проигрыватель в дистрибутив, снимая любую головную боль с пользователя Это красивый и правильный подход




Добавлено:
ЗЫ Если некуда приткнуть (что практически сейчас нереально) - можешь скинуть мне, положу себе на сайт. Или могу положить во временную папочку, если не хочешь расшаривать проект навсегда
Автор: tavria2
Дата сообщения: 16.10.2006 08:52
GOOSE

Цитата:
Лично мне вот совсем не очевидна необходимость "игры с активными окнами"

С одной стороны я понимаю Labus'а, человек учится и хочет попробовать реализовать разные фишки, с другой стороны возможно преследуется другая цель, типа не дать пользователю запустить вторую копию плеера, хотя для этого есть иные пути решения этой задачи. Надеюсь мы узнаем какая цель преследовалась .
Автор: Toxaaa
Дата сообщения: 16.10.2006 11:01
Добрый день. Поставил я перед собой задачу сделать авторан с домашним видео. Но упёрся в одну проблему. Как запустить видео со списка Listboxa я разабрался, но хочу сделать 2 Listboxa в первом выбирать папку с видео, а во втором выбирать сам видео файл, проблема заключается в том что у меня не получается добавить в Listbox список с файлами. Вод до чего я по примерах дошел но оно не работает:

_Searchdir=_SourceFolder.."AutoPlay\Videos\1\";
FileList = File.Find(_Searchdir.."\\", "*.avi", false, false, nil);
for j in FileList do
FileName = String.Replace(FileList[j], _Searchdir.."\\", "", false);
ListBox.AddItem("ListBox2", FileName, FileList[j]);
end

подскажите пожалуйста как правильно загрузить список файлов (Каталогов) в ListBox.
Автор: tavria2
Дата сообщения: 16.10.2006 14:20
Toxaaa

Цитата:
_Searchdir=_SourceFolder.."\\AutoPlay\\Videos\\1\\";

Одинарные слеши используются только совместно с управляющими символами, в пути - только двойные.
Код: _Searchdir=_SourceFolder.."\\AutoPlay\\Videos\\1\\";
FileList = File.Find(_Searchdir.."\\", "*.avi", false, false, nil);
for j, cFullName in FileList do
    tPath = String.SplitPath(cFullName); -- разлаживаем путь на составляющие: диск, папка, имя файла и расширение    
    cFileName = tPath.Filename..tPath.Extension; -- имя файла + расширение файла
    ListBox.AddItem("ListBox2", cFileName, cFullName); -- отображаем только имя файла, в данные заносим полный путь, включая имя файла
end
Автор: Toxaaa
Дата сообщения: 16.10.2006 16:46
tavria2
Спасиба Вы мне очень помогли теперь я сделал второй Listbox в котором отображаются файлы и при нажатии воспроизводится видео (всё работает отлично). Ваш код я записал на Buttonы, а как теперь сделать первый Listbox в котором будут отображатся папки ("\\AutoPlay\\Videos\\) , после выбора которых во втором Listbox появится список файлов?

Зарание благодарен.
Автор: tavria2
Дата сообщения: 16.10.2006 17:54
Toxaaa
В событии страницы On Show

Код: _Searchdir=_SourceFolder.."\\AutoPlay\\Videos\\"; -- путь к подкаталогам папки Videos
FoldersList = Folder.Find(_Searchdir, "*", true); -- таблица подкаталогов
if (FoldersList) then --есть подкаталоги
    for j, cFullName in FoldersList do
        tPath = String.SplitPath(cFullName); -- разлаживаем путь на составляющие: диск, папка, имя файла и расширение
        cFolderName = tPath.Filename..tPath.Extension; -- имя папки + расширение папки
        ListBox.AddItem("ListBox1", cFolderName, cFullName); -- отображаем только имя папки, в данные заносим полный путь
    end
end
Автор: Labus
Дата сообщения: 16.10.2006 18:15
GOOSE,tavria2!

Признателен Вам за мнения ЭКСПЕРТОВ, они мне очень важны и придают уверенности в будующих свершениях .А цель при создании именно таких переходов в действиях,
была обоснованна максимальным облегчением в запуске фильмов и контролем за ними.
У меня дома скопилось достаточно много файлов фильмов, на которые без жалости смотреть нельзя.Они и на внешних HDD, на основном жёстком диске и на не многочисленных CD.В общей сложности порядка 520 фильмов + 90 коллекционных DVD.
Вся подробнейшая информация о них, хранится в программе AllMyMovies.И тут в голове стали рождаться творческие "начала" .
Сделал красивую вытянутую коробочку, в которую помещаются по размерам пластиковые конверты с DVD, приятель нарисовал великолепнейшую наклейку на неё, ввиде раскручивающейся киноплёнки с надписью "Киноархив".И вот здесь встал вопрос, как перенести на DVD-болванку по 6-7 фильмов, чтобы при этом не было стыдно их хозяину, после недельного рысканья по просторам сети, выбор пал на уникальную программу под названием Autoplay Media Studio.Сам по себе я не силён в тонкостях компьютерных технологий, поэтому приходится порой спрашивать или уточнять, для некоторых, очевидные вещи.Ну вот собственно и всё, только AMS!!!
Что же касается WMP, то считаю программистов и дизайнеров из Microsoft-a одними из лучших в мире (моё личное мнение,оно не навязываемо никому и не в коем случае!!!).
Офигительный, спокойный,удобный,не кричащий,обладающий всеми современными достоинствами мультимедийный плеер.WMP-10 использую 1,5 года и никаких претензий не имею,СУПЕР МАШИНА!!!Из простеньких, ребята привлекает Media Player Classic, но
этот дружок несколько простоват по интерфейсу.
Вообще друзья, по классике хочется разбить всю свою коллекцию на 3-4 основных жанра и отсюда уже прыгать.Подготовить сообразно жанрам, в различной цветовой гамме фоны меню.Подумать о коротких фрагментах из фильмов, которые бы присутствовали в авторанах и т.д и т.п.Но самое главное, хочется что бы при раскрутке DVD, появлялась достаточно простая в навигации панель.
Ну вот скажите мне, зачем делать многоуровневое меню, с многочисленными переходами,
на диске где помещены 6 фильмов, из личной коллекции и основная цель которых запуститься и доставить удовольствие смотрящему, логичный подход?
Поэтому простота, простота и ещё раз простота,НО ВПЕЧАТЛЯЮЩАЯ!!!.
Заварил чай с лимоном, положил в лоток DVD-привода болванку с "Осенним марафоном"
или "Кавказской пленницей,кликнул пару раз в красивой и понятной менюшке, откинулся на кресло и получай удовольствие по полной ...;) Всего всем наилучшего!

Автор: Toxaaa
Дата сообщения: 16.10.2006 18:49
tavria2
Спасибо за столь детальную подсказку сам наверное не разобралсяб. Теперь осталось сделать чтоб когда видеофайл доиграет запускался новый попробую пример с mp3 описаный выше переделать, может одалею...,а может и нет...
Автор: GOOSE
Дата сообщения: 17.10.2006 08:25
Labus

Цитата:
Ну вот скажите мне, зачем делать многоуровневое меню, с многочисленными переходами,
на диске где помещены 6 фильмов, из личной коллекции и основная цель которых запуститься и доставить удовольствие смотрящему, логичный подход?
Поэтому простота, простота и ещё раз простота,НО ВПЕЧАТЛЯЮЩАЯ!!!

Дарю идею
Сделай авторан из пары страниц (одна большая, где можно глянуть превью, описание, режиссер, актеры etc. и вторую в виде тоненькой полоски... в общем некое подобие панели задач, что ли ) Удобно, не мешает почти. А если и мешает, то скрыть можно...
Автор: Toxaaa
Дата сообщения: 17.10.2006 09:13
Пробую сделать чтобы играл один видеоролик за другим но у меня что-то не получается, подскажите пожалуйста где у меня ошибка:

tSelected = ListBox.GetSelected("ListBox2");
if tSelected then
for nTableIndex, nListBoxIndex in tSelected do
sFilePath = ListBox.GetItemData("ListBox2", nListBoxIndex);
Video.Load("Video1", sFilePath, true, false);
if sFilePath == "Finish" and nListBoxIndex < ListBox.GetCount("ListBox2") then
nListBoxIndex = nListBoxIndex + 1;
ListBox.SelectItem("ListBox2", nListBoxIndex);
sFilePath = ListBox.GetItemData("ListBox2", nListBoxIndex)
Video.Load("Video1", nListBoxIndex, true, false)
end
end
end

В 6 строчке вместо sFilePath наверное что-то иное нужно писать но я в командах понимаю мало.
Автор: tavria2
Дата сообщения: 17.10.2006 11:18
Toxaaa

Цитата:
В 6 строчке вместо sFilePath наверное что-то иное

И не только в 6 строчке. Предлагаю следующее: Перед запуском фильма, запустить таймер, который будет отслеживать завершение фильма, после чего изменяет позицию в ListBox2 на следующую и запускает следующий фильм. Как только список фильмов закончится - таймер отключаем и на этом просмотр завершен.

ListBox2 On Double-Click
Код: nIndex = ListBox.GetSelected("ListBox2"); -- индекс выбранных пунктов
if (nIndex) then
    cItemData = ListBox.GetItemData("ListBox2", nIndex[1]); -- путь указанный в данных выбранного пункта
    Page.StartTimer(100); -- запускаем таймер
    Video.Load("Video1", cItemData, true, false); -- запускаем видео
end
Автор: Labus
Дата сообщения: 17.10.2006 14:35
GOOSE

Цитата:
и вторую в виде тоненькой полоски... в общем некое подобие панели задач, что ли )

Ну вот видишь уже какие-то творческие мысли стали появляться , это на мой взгляд людей сближает в общем деле, согласен? Скажи дружище пожалуйста,назначение полоски этой в чём,насчёт первой страницы понял, а здесь не могу докумекать?

И второй вопрос, могу ли я с тобой обмениваться идеями (в некоторых случаях) посредством E-mail, чтобы на страницах уважаемого форума не показаться дилетантом и недоучкой ...

И третий вопрос , друзья может кто-то знает, можно ли где-то в сети скачать полную версию Style Workshop (кнопки,фоны,тестуры)?


Автор: GOOSE
Дата сообщения: 17.10.2006 14:52
Labus

Цитата:
Скажи дружище пожалуйста,назначение полоски этой в чём,насчёт первой страницы понял, а здесь не могу докумекать?

Ну это для того, чтобы авторан не сворачивать полностью, а всегда бы его иметь под рукой, но не мешающим, в "урезанном" виде

Цитата:
могу ли я с тобой обмениваться идеями (в некоторых случаях) посредством E-mail

Да ради бога! Мыло то в профиле рабочее, да и ПМ никто не отменял

Цитата:
можно ли где-то в сети скачать полную версию Style Workshop (кнопки,фоны,тестуры)?

Вопросы такие не в этом форуме...
Не встречал. Да и вряд ли будет. Кому оно надо? Лично я так лучше сам нарисую коряво, чем их шаблонные вещи... в общем, не вдохновил он меня
Доступен только AutoPlay Media Studio 6.0 Bonus Pack (Mega Content Pack), но это тоже в другом форуме
Автор: Toxaaa
Дата сообщения: 17.10.2006 15:52
tavria2
Спасибо сделал как написано всё работает...
Проект почти готовый но я хочу ещё сделать и просмотр фотографий потому как в каталоге у меня есть и видео и фото на одну тематику, разадумка у меня такая: в ListBox1 я выбираю каталог и в ListBox2 могу выбрать видео из етого каталога, но для просмотра фотографий из "етого" точнее каталоги с фотографиями я помещу в "\\AutoPlay\\Images\\" но их имена будут идентичны тем что и "\\AutoPlay\\Videos\\". Для просмотра фотографий буду использовать PhotoCDBrowser которий я запишу в каждую папку с фотографиями. Хочу сделать отдельную кнопку, при нажатии которой будет запускаться PhotoCDBrowser с одноимённой папки та которая выбрана в ListBox1. Тоесть я хочу чтобы после выбора каталога в ListBox1 кнопке присваивался путь \AutoPlay\\Images\\1\\ вместо "\\AutoPlay\\Videos\\1\\"
Подскажите как правильно ето сделать.
Автор: tavria2
Дата сообщения: 17.10.2006 16:37
Toxaaa

Цитата:
каталоги с фотографиями я помещу в "\\AutoPlay\\Images\\" но их имена будут идентичны тем что и "\\AutoPlay\\Videos\\"

Чесно говоря я не совсем представляю суть проекта, но мне кажется привязывать имена фото к именам видео - это не правильно, т.к. завтра может прийдется добавлять еще фото, что приведет к несоответствию имен между видео и фото. Раскажи подробнее что это и для чего, если конечно это не есть секрет или комерческий проект .

Цитата:
Для просмотра фотографий буду использовать PhotoCDBrowser которий я запишу в каждую папку с фотографиями.

Ну записывать в каждую папку не нужно, достаточно поместить в папку проекта Doc и вызывать его оттуда. Так же я не вижу смысла в использовании ListBox, т.к. просмотрщик имеет свою навигацию. Достаточно кнопки для вызова просмотрщика с соответствующими параметрами.
Автор: Labus
Дата сообщения: 17.10.2006 18:22
GOOSE, в AMS есть такая в некоторых случаях полезная вещь, как готовые шаблоны (*apt,*apz).Подскажи мне если сможешь, можно ли какими-либо настройками программы сделать так, чтобы при ознакомлении с ними, последние не добавлялись бы в папку с моими проектами? Спасибо.

Ребята и как ставить AMS 6 Content(Bonus) Pack, есть ли особенности или просто install и всё? Как бы мне не напортачить
Автор: Toxaaa
Дата сообщения: 17.10.2006 19:04
tavria2

Цитата:
Чесно говоря я не совсем представляю суть проекта, но мне кажется привязывать имена фото к именам видео - это не правильно

Нет я наверное плохо виложил свою мысль, имелось ввиду имена каталогов. Например есть у меня каталог "Лето_2006" я его делаю подкаталогом в каталоге \\AutoPlay\\Videos\\ и помещаю сюда видио Лета2006, также я делаю подкаталог "Лето_2006" в каталоге \\AutoPlay\\Images\\ и помещаю сюда фотографии Лета2006 имена видео и фото не одинаковы

Цитата:
Ну записывать в каждую папку не нужно, достаточно поместить в папку проекта Doc и вызывать его оттуда.

Да но у PhotoCDBrowser есть глюк когда кешируются миниатюры то они не отображаются если файлов в папке больше 21 и выйти из каталога и зайти обратно. Просто я в самом PhotoCDBrowser настрою чтобы выше етого каталога он не пускал.

Цитата:
Так же я не вижу смысла в использовании ListBox, т.к. просмотрщик имеет свою навигацию

PhotoCDBrowser будет настроен только на ету папку выше неё он пускать не будет. Я хочу сделать так: в ListBox1 я выбираю Лето_2006 через ListBox2 смотрю видео. А снизу кнопка "Просмотр фото" (из раздела Лето_2006) я её нажимаю и запускается PhotoCDBrowser который отображает фотки только етой папки, выхожу из PhotoCDBrowser в ListBox1 выбираю Осень_2006 через ListBox2 смотрю видео жму на ту самую кнопку "Просмотр фото" запускается PhotoCDBrowser из каталога \\AutoPlay\\Images\\Осень_2006\\PhotoCDBrowser.exe. Вот такая у меня задумка...

Цитата:
Раскажи подробнее что это и для чего, если конечно это не есть секрет или комерческий проект
Конечно нет с моими то знаниями программы токо вкомерцию ити




Страницы: 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667

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


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