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

» Autoplay Media Studio

Автор: KENT154
Дата сообщения: 18.06.2010 16:33
Lexua
спс, дома буду проверю
Автор: bigbrain
Дата сообщения: 19.06.2010 13:37
Подскажите, пожалуйста, можно ли сам исполняемый файл проекта (autoplay.exe) запустить с параметрами командной строки и разные сценарии поведения программы использовать?

Например, с ключом -admin у программы одно поведение, а без ключа другое

Спасибо
Автор: tavria2
Дата сообщения: 20.06.2010 09:15
bigbrain

Цитата:
Подскажите, пожалуйста, можно ли сам исполняемый файл проекта (autoplay.exe) запустить с параметрами командной строки и разные сценарии поведения программы использовать?

В AMS есть глобальная таблица _CommandLineArgs, которая всегда содержит параметры переданные проекту при его запуске.
Автор: Doggu
Дата сообщения: 20.06.2010 16:14
Народ помогите, как сделпть что б при закрытие окана он просил ввести код и закрывался, а при нажатие на кнопку далее он просил код и переходил на след, страницу?
Автор: lerik2703
Дата сообщения: 20.06.2010 17:59
Doggu

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

Нельзя запрещать пользователю закрывать окно или закрывать при условии ввода паролей и т.д. это уже является вредоносным ПО

Автор: Doggu
Дата сообщения: 20.06.2010 20:06
lerik2703 я решил учебник сделать и при выводе теста что б ученик не мог его закрыть просил ввести пороль))
Автор: bigbrain
Дата сообщения: 20.06.2010 21:22
Подскажите, пожалуйста, когда я какой-то функцией получаю путь файла (картинки, xml и т.д.).
Он выдает полный путь, как его отрезать, чтобы только имя файла с расширением осталось?
В операциях со строкой нашел только как резать определенное число символов.
Автор: lerik2703
Дата сообщения: 20.06.2010 21:25
Doggu
Тогда в Global Functions


Код: function QueryAllowProjectClose()
realPassword="qwaszx"
userPassword = Dialog.PasswordInput("Выход", "Введите пароль для выхода", MB_ICONEXCLAMATION);
if realPassword == userPassword then
return true;
else
return false;
end
end
Автор: Doggu
Дата сообщения: 20.06.2010 21:32
lerik2703 спасибо
Автор: bigbrain
Дата сообщения: 20.06.2010 21:33

Цитата:
lerik2703 спасибо

Присоединяюсь


Добавлено:
Можно еще вопрос?
Есть Crypto плагин, который нормально криптует файлы?
Я раньше в более младших версиях пробовал, но потом всегда ловил промежуточный распакованный вариант во временной папке.

Может в 8-й версии ситуация изменилась?
Нужно, чтобы программа загрузила память, потом без создания временных файлов расшифровала и использовала в сценарии (например, отобразила на странице).

Это с одной стороны защита авторских прав, а с другой стороны защита от изменения контента
Вторую задачу конечно можно решить, поставив проверку контрольной суммы на каждый файл, но это боян
Автор: Kindly
Дата сообщения: 21.06.2010 19:21
bigbrain
Цитата:
Это с одной стороны защита авторских прав, а с другой стороны защита от изменения контента
боян Реально защитить AMS код все равно не получится, но если хочешь чтобы в памяти все происходило, используй виртуализаторы, типа MoleBox.
Автор: XITMAH
Дата сообщения: 22.06.2010 23:03
Подскажите пожалуйста, как сделать так, чтоб в окне прокрутки, при нажатии на «#1» в соответствующих окнах, загружалась картинка, и текст?

Вообще м, как сделать чтоб в определенном месте загружалась картинка и текст, я знаю, а вот как сделать чтоб оно взаимодействовало с окном прокрутки, для меня загадка.
Автор: bigbrain
Дата сообщения: 22.06.2010 23:15
Только вчера такое написал, у меня все работает через XML
Там наполнялка есть и сама форма вывода.
При загрузке страницы парсится XML и в listbox грузится список (у меня фамилии).
ри нажатии на фамилию появляются текстовые поля и фото.

В общем случае делается так.
selected_items = ListBox.GetSelected("ListBox1"); --получаем строку, которая сейчас выделена, а дальше очень просто. Это табличные данные, потому вставляем как selected_items[1] - первая выделенная строка
В моем варианте по фамилии грузится информация из соотвествующего блока. У вас может быть и просто текст.
If selected_items[1] == ваше значение then
Paragraph.SetText("paragraf1","Ваш текст");
Image.Load("Image1", "путь к картинке");
else
If selected_items[1] == ваше значение then
и так далее
Автор: XITMAH
Дата сообщения: 23.06.2010 00:24
bigbrain
Не могли б вы скинуть пример, а то я малость не разобрался, где что вписывать?
Автор: bigbrain
Дата сообщения: 23.06.2010 00:59
сори щас объясню подробнее, чуть ошибся

selected_items = ListBox.GetSelected("ListBox1"); -- это писать в самом Listbox объекте, событие (вкладка) On Select
все остальное попробуйте написать тут же

Логика работы такая:
Событие On Select у Listbox (это ваше окно с прокруткой) возникает когда пользователь щелкает по какому-то элементу списка.
Когда это произошло мы и выполняем задачу ListBox.GetSelected("ListBox1"), т.е. получаем данные о том, что выбрал пользователь. Так как пользователь мог выбрать несколько значений, если разрешено в настройках, то данные записываются в таблицу (массив).
С массивом обращаются таким образом. Чтобы получить значение из массива нужно указать порядковый номер строки содержащей нужные данные. Это делается так selected_items[1]

Например, у вас в списке
апельсины
яблоки
груши

и мы выбрали апельсины. selected_items[1] будет содержать значение 1, т.е. первое значение в списке

В самом простом случае, если не хотите писать сильно сложный скрипт, то пишете (в том же окне On Select)
if selected_items[1] == 1 then
Paragraph.SetText("paragraf1","Ваш текст");
Image.Load("Image1", "путь к картинке");
else
...
end

Теперь по-русски как это звучит
Если selected_items[1] равно 1 ( = - это присваивание значения, == - это сравнение, равно или нет) тогда
Paragraph.SetText("paragraf1","Ваш текст"); - указанный текст вставляется в объект Paragraph
Image.Load("Image1", "путь к картинке"); - загрузка картинки по указанному адресу
Иначе
тоже самое для значения 2 и сколько у вас в списке
В конце пишете end столько раз, сколько было if

Это самый простой способ, который доступный всем

Небольшие пояснения. Событие On Select возникает при каждом щелчке по объекту Listbox и следоватьельно наш код будет при этом каждый раз выполняется, что нам и нужно
Для функции Image.Load нужно делать объект Image такого же размера, как и ваши картинки, иначе нужно будет так же размер картинки передавать для изменения объекта Image

selected_items = ListBox.GetSelected("ListBox1") - здесь и везде ListBox1, paragraf1, Image1 и прочее меняете на названия своих объектов

Автор: XITMAH
Дата сообщения: 23.06.2010 01:25
bigbrain
Спасибо большое!!! Теперь вся понятно.

А можно как-то изменить стиль прокрутки, тоесть вместо стандартного сделать какой нить другой?
Автор: bigbrain
Дата сообщения: 23.06.2010 23:07
Видимо стоит попробовать вот этот плагин ..., расширенный Listbox. Там вероятно есть, в стандартном нет
Автор: XITMAH
Дата сообщения: 24.06.2010 00:14
bigbrain
У меня открывает вое эту страницу: http://forum.ru-board.com/topic.cgi?forum=35&topic=0720&start=0&limit=1&m=11#1 где там скачать плагин?
Автор: andreytmn
Дата сообщения: 25.06.2010 07:47
всем привет

кто нибудь может подсказать как сделать следующее в коде проекта
получаем разрешение монитора пользователя
если оно меньше 1024*768 то переход к этому разрешению
если монитор не поддерживает его то сообщение об ошибке
и пожалуйста кодом , а то только начал разбираться

и еще как сделать что бы dialogs закрывался при клике на нем
я разобрался что надо в script -> on mous button выставить параметр e_type + команда, а как это реализовать чёт не допру



Добавлено:
с закрытием разобрался
Автор: lorents
Дата сообщения: 25.06.2010 21:21
andreytmn
смотри System.GetDisplayInfo();

в справке как раз пример для тебя
Автор: Lexua
Дата сообщения: 26.06.2010 00:32
tavria2 Вопрос больше к Вам ибо Вы автор функции, приводящей к выводу диалога Да/Нет при попытке закрытия проекта. Как бы нечто подобное применить к DialogEx? Т.е. вывод диалога о закрытии не нужен, но нужен запрет закрытия окна диалога, пока выполняется подпрограмма, запущенная из него. Я имею ввиду, что, например выполняя команду File.Find ( выполнение может занимать некое время) или какую-то внешнюю подпрограмму окно диалога можно закрыть, нажав на [Х] и тогда результатов работы не увидишь.
Автор: tavria2
Дата сообщения: 26.06.2010 07:39
Lexua

Цитата:
Как бы нечто подобное применить к DialogEx? Т.е. вывод диалога о закрытии не нужен...

Global Functions
Код: function QueryAllowDialogClose(Dialog)
-- if (Dialog == "Dialog1") then
if (bLock) then return false else return true end
-- end
end
Автор: Lexua
Дата сообщения: 26.06.2010 08:41
tavria2
Спасибо, никогда бы не подумал, что так просто
Автор: andreytmn
Дата сообщения: 26.06.2010 10:43
lorens
спасибо за подсказку,но это не совсем то. В примере просто выдается сообщение о том что разрешение не соответствует необходимому. И пользователь сам его должен изменить.

Мне надо что бы это делала прога автоматически, а при не поддержании монитором условий выдавала бы об этом сообщение.

делаю так

-- получаем разрешение экрана пользователя
display = System.GetDisplayInfo();
-- условие
if (display.Width < 1024) then
    ChangeDisplaySettings(1024,768,16,70,0)
    
end

выдает ошибку attempt to call global ChangeDisplaySettings (a nil value) --- попытка вызвать глобальное нулевое значение

строка ChangeDisplaySettings(1024,768,16,70,0) отдельно работает

знающие и соображающие помогите пожалуйста.
Автор: bigbrain
Дата сообщения: 26.06.2010 11:58
Что за функция ChangeDisplaySettings - Вы ее сами придумали? отдельно она у меня не работает, как Вы пишете.

Я бы написал так:
display = System.GetDisplayInfo();
-- условие
if (display.Width < 1024) then
warning = Dialog.Message("Неподдерживаемое разрешение", "Минимальное необходимое разрешение для работы программы 1024х768, а у Вас "..display.Width.." x "..display.Height.."\n\n Если Вы хотите изменить разрешение, нажмите ДА, \n\n\ Чтобы выйти из программы нажмите кнопку НЕТ.", MB_YESNO, MB_ICONINFORMATION, MB_DEFBUTTON1);
end

if warning == IDYES then -- пользователь согласен
--изменить разрешение, по-моему это можно только с помощью внешней библиотеки какой-то
else
Application.Exit(0);
end

З.Ы. А вообще реально менять разрешение монитора пользователю это не корректно даже с его согласия. Ведь всегда неприятно, когда с одной из программ приходится менять разрешение.
Разрешение 800х600 сейчас редко где найти можно, но если Вам нужна его поддержка, то проще написать функцию resizing, которая позволит отображать Ваш проект на любом мониторе.

Добавлено:

Цитата:
У меня открывает вое эту страницу

XITMAH Нужно вверху нажать ссылку "к этому сообщению" (визуально находится на кнопкой Создать опрос).
Она ведет на страницу про AMS в варезнике
Автор: Zloy_Gelud
Дата сообщения: 26.06.2010 15:13
andreytmn
Если в Глобальных функциях написана функция ChangeDisplaySettings, то её вызов должен работать из любого места! Поэтому у меня работает например такое:
On Show страницы :

Код: tDisplay = System.GetDisplayInfo();
if tDisplay.Width < 1280 then
ChangeDisplaySettings(1280,1024,32,60,0)
end
Автор: bigbrain
Дата сообщения: 26.06.2010 15:19
Можете тут привести код ChangeDisplaySettings?
Возможно у andreytmn она была не прописана в глобальных. Например, он как начинающий пользователь может не знать о глобальных функциях проекта.
Посмотрел на странице скрипт и подумал, что она встроенная (built-in)
Автор: Zloy_Gelud
Дата сообщения: 26.06.2010 15:44
bigbrain

Код: --[[

function name:     ChangeDisplaySettings

Arguments:     width, height, Depth, Freq, Permanent (0 false, 1 = true)

Returns:          0 = The settings change was successful.
1 = The computer must be restarted in order for the graphics mode to work.
-4 = An invalid set of flags was passed in.
-1 = The display driver failed the specified graphics mode.
-2 = The graphics mode is not supported.
-3 = Windows NT only: Unable to write settings to the registry.

Description        sets the users screen res
]]


-- Global function for the screen settings, !!!DO NOT EDIT!!!

function ChangeDisplaySettings(width,height,Depth,Freq,Permanent)
args = width..", "..height..", "..Depth..", "..Freq..", "..Permanent
result = DLL.CallFunction("AutoPlay\\Docs\\DLLDisplaySettings.dll", "ChangeDisplaySettings", args, DLL_RETURN_TYPE_STRING, DLL_CALL_STDCALL);
if result == "0" then
local hWnd = Application.GetWndHandle();
local WndSize = Window.GetSize(hWnd);
local ScreenRes = System.GetDisplayInfo();
local NewPos_X = (ScreenRes.Width - WndSize.Width)/2;
local NewPos_Y = (ScreenRes.Height - WndSize.Height)/2;
Window.SetPos(hWnd, NewPos_X, NewPos_Y);
else
if result == 1 then err = "The computer must be restarted in order for the graphics mode to work"
elseif result == "-4" then err = "An invalid set of flags was passed in"
elseif result == "-1" then err = "The display driver failed the specified graphics mode"
elseif result == "-2" then err = "The graphics mode is not supported"
elseif result == "-3" then err = "Unable to write settings to the registry"
end
Dialog.Message("Error", err, MB_OK, MB_ICONNONE, MB_DEFBUTTON1);
end
Автор: bigbrain
Дата сообщения: 26.06.2010 15:49
Спасибо, Zloy_Gelud! Я был прав, тут смена разрешения через внешнюю библиотеку
andreytmn, чтобы функция работала не забудьте в папку AutoPlay\Docs\ в Вашем проекте скопировать файл DLLDisplaySettings.dll

Выложите, пожалуйста, и саму библиотеку
Автор: andreytmn
Дата сообщения: 26.06.2010 16:09
Ребята спасибо за ответы.
Мне надо с меньшего перейти на большее.
Функцию действительно взял из проекта скачанного на родных просторах.
То то она мне показалась какой то не такой, а в doc заглянуть не допер.
Спасибо еще раз буду смотреть и разбираться.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140

Предыдущая тема: Media Player Classic - Home Cinema (MPC-HC)


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