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

» Indigo Rose AutoPlay Media Studio

Автор: Zloy_Gelud
Дата сообщения: 17.01.2013 13:16
vazzzzz

У меня функция копирования в Буфер обмена выглядит так: [more=ClipBoard.SetData]
Код: CF_TEXT = 1;
CF_UNICODETEXT = 13;
CF_OEMTEXT = 7;

if not ClipBoard then ClipBoard = {}; end

ClipBoard.SetData = function (vData, nFormat)
nFormat = nFormat or CF_TEXT;
local hWnd = Application.GetWndHandle();
local tData, hLock, hMemory, nSize, hStruct
if (type(vData) == "number") and (vData == 0) then
hMemory = vData;
else
if (type(vData) == "string") then
nSize = #vData;
else
return -1;
end
nSize = nSize + 1;
if (nFormat == CF_UNICODETEXT) then
hMemory = tonumber(DLL.CallFunction("kernel32.dll", "GlobalAlloc", "66,"..(nSize * 2), DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
else
hMemory = tonumber(DLL.CallFunction("kernel32.dll", "GlobalAlloc", "66,"..nSize, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
end

local STR1 = MemoryEx.DefineStruct{STRING("char", nSize)};
local STR2 = MemoryEx.DefineStruct{STRING("wchar", nSize, 1, MEMEX_UNICODE)};
local STR3 = MemoryEx.DefineStruct{BYTE("byte")};

if (hMemory == 0) then return -1; end
hLock = tonumber(DLL.CallFunction("kernel32.dll", "GlobalLock", hMemory, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL));
if (hLock == 0) then return -1; end
if (nFormat == CF_TEXT) or (nFormat == CF_OEMTEXT) then
hStruct = MemoryEx.AssignStruct(hLock, STR1);
hStruct.char = vData;
elseif (nFormat == CF_UNICODETEXT) then
hStruct = MemoryEx.AssignStruct(hLock, STR2);
hStruct.wchar = vData;
else
hStruct = MemoryEx.AssignStruct(hLock, STR3);
hStruct.byte = vData;
end
DLL.CallFunction("kernel32.dll", "GlobalUnlock", hMemory, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL);
end
if (DLL.CallFunction("user32.dll", "OpenClipboard", hWnd, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL) == "0") then
hStruct:Close();
return -1;
end
if (DLL.CallFunction("user32.dll", "EmptyClipboard", "", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL) == "0") then
hStruct:Close();
return -1;
end
if (DLL.CallFunction("user32.dll", "SetClipboardData", nFormat..","..hMemory, DLL_RETURN_TYPE_INTEGER, DLL_CALL_STDCALL) == "0") then
hStruct:Close();
DLL.CallFunction("user32.dll", "CloseClipboard", "", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
return -1;
end
hStruct:Close();
DLL.CallFunction("user32.dll", "CloseClipboard", "", DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);
return hMemory;
end

--ClipBoard.SetData("Ru-Board");
ClipBoard.SetData("Это Спарта!", CF_UNICODETEXT);
Автор: Robby
Дата сообщения: 17.01.2013 13:49
collagen
тоже проверил. С новой справкой все в порядке, вызовы проходят нормально. Как пожелание, перекомпилируй справку чтобы она открывалась с большим размером окна и по центру экрана, а также более широкой левой панелью с содержанием (чтобы видно было весть текст в строке). Неудобно каждый раз ее растягивать. В ближайшее время обновлю репак в варезнике.
Автор: vazzzzz
Дата сообщения: 17.01.2013 14:11
[more] [more]
Цитата:
У меня функция копирования в Буфер обмена выглядит так: ClipBoard.SetData


Это через какой плагин? Или через winapi? Я не очень опытный в ams

Отредактировано: вопрос снят (не увидел, что ClipBoard.SetData это есть ссылка)


Цитата:
Нужен подключенный плагин MemoryEx by Imagine Programming.


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


Цитата:
Если не изобретать велосипед, то можно использовать плагин Clipboard by Indigo Rose Corporation.


Пробовал. Копирует. Но копирует корректно только строки латиницей, цифры и др.знаки. А вместо кириллицы в буфер отправляются крокозябры. Как я понял ams кириллицу переводит в unicode, при этом все работает с ansi. Другими словами вмешаться в процедуру Clipboard.CopyText с целью перекодировки текста - не получится.

Вобщем какая-то подстава..

Начинаю win7 подозревать в каких-то ограничениях при попытке приложения записать что-то в буфер обмена (хотя запускается приложение из Program Files от лица администратора). [/more] [/more]
Автор: Zloy_Gelud
Дата сообщения: 17.01.2013 14:24

Цитата:
Это через какой плагин? Или через winapi? Я не очень опытный в ams

Через плагин, который я написал ниже - MemoryEx by Imagine Programming
Скачать: http://www.memoryex.net/download/mx/MemoryEx-Plugin-2.0.0.1.zip

Цитата:
Если есть возможность - приведите пример кода, который копирует строку в буфер обмена, а то моск закипает..

В моем примере в конце же:

Код: --ClipBoard.SetData("Ru-Board");
ClipBoard.SetData("Это Спарта!", CF_UNICODETEXT);
Автор: vazzzzz
Дата сообщения: 17.01.2013 14:37
Zloy_Gelud

Спасибо огромное! Все увидел почти сразу!) Работает замечательно!!! PS У меня не получается убрать эти теги more! Я думал это проделки администраторов или ограничения для новичков в связи с недостаточным кол-вом сообщений на форуме. Хотя правила перечитал еще раз, там про ограничения ни слова. Пытался их убрать неоднократно.
Автор: Zloy_Gelud
Дата сообщения: 17.01.2013 14:42
vazzzzz

Цитата:
У меня не получается убрать эти теги more!

Ах да, я забыл, что это относительно новое ограничение для новичков. Тег [no][more][/more][/no] будет автоматически обрамлять твои сообщения, пока не наберешь определенное количество сообщений на форуме и/или не пройдет определенное количество времени от даты твоей регистрации. Точные числа знает только администратор.
Автор: collagen
Дата сообщения: 17.01.2013 15:40
Robby
Вот новая справка: http://rghost.ru/43101310. Были размеры 150 - ширина левой панели; 0,0 размеры отступа слева и сверху и 750 - ширина окна, 600 - высота окна. Стало 220 - левая панель; 100,50 отступ слева и сверху; и 1000,900 - ширина и высота окна. Кроме этого поставил галку на Save user defined window position after first use (Сохранять после первого использования положение окна установленное пользователем), т.е. справка будет сохранять положение окна, включая и ширину левой панели, установленное пользователем.

Но на мой взгляд, такое увеличение неправильно, ведь есть же наверно люди, что работают с низким разрешением экрана. А вот то, что сохраняется положение установленное пользователем, хорошо и правильно.
Автор: Robby
Дата сообщения: 17.01.2013 16:27
collagen
Так намного лучше, и сохранение позиции окна тоже нужно, забыл про это написать в первый раз. Да, не у всех выосокое разрешение экрана, но думаю, что с 800Х600 уже никто не работает, поэтому разрешение где-то 800Х600 и было бы оптимальным для минимального размера окна по умолчанию.
Автор: rokhlin
Дата сообщения: 21.01.2013 12:08
Привет Всем!!

Делаю учебное пособие, и в нем есть необходимость отображать материалы с корп. портала, соответственно, чтобы не дублировать материалы есть потребность отображать в окне AMS часть веб страницы. естественно вся страница содержит много лишней информации а мне нужно загружать только кусок, например, между определенными <div> тегами или на крайний случай <body> целиком

Кто-нибудь подобного рода штуки делал,или есть примеры похожие, направьте плиз в нужное русло.

Автор: ActiveColours
Дата сообщения: 22.01.2013 01:08
Как возможно сделать запуск программы только в определённую минуту часов на компе? В смысле чтобы запускать возмошно было ёлько в определённую минуту
Автор: Zloy_Gelud
Дата сообщения: 22.01.2013 07:48
ActiveColours
См. System.GetTime

rokhlin
С помощью HTTP.Submit получаешь исходный код страницы, заием регапсами выдираешь нужный кусок.
Автор: rokhlin
Дата сообщения: 22.01.2013 09:54
Zloy_Gelud


Цитата:
заием регапсами выдираешь нужный кусок.


можно по подробнее что это, в сленге не силен.

Я реализовал эту задачу таким образом:
Сохраняю страничку HTTP.Download

Далее закгружаю как String

и спомощью команд String.Left оставив нужный кусок, сохраняю в html добавив недостающие теги.
финальный файл отображаю, но есть 2 момента:
1. Он уменя кракозяблит кириллицу, пока не разобрался как исправить
2. Слишком много промежуточных действий ака: "Быдлокод" получается, но лучше не придумал.
Автор: Zloy_Gelud
Дата сообщения: 22.01.2013 10:16
rokhlin

Цитата:
можно по подробнее что это, в сленге не силен.

regexp
Стандартные LUA функции для работы со строками как раз поддерживают regexp.
Автор: rokhlin
Дата сообщения: 22.01.2013 11:13
Zloy_Gelud
Спасибо поищу, пока не нашел где можно про это почитать.

интересно, там также кириллица будет слетать?
или может есть способ как при работе со строками сохранить\указать кодировку?
Автор: LordSP
Дата сообщения: 22.01.2013 13:40
Ребят, все привет, помогите пожалуйста с таким вопросом: У меня есть программа Program.exe, как сделать так чтобы в Autoplay Media Studio не показывалась форма, просто было написано, загрузка, а в это время добавлялась запись в реестр, и только после того как она была создана, запускалась Program.exe, опять же без формы Autoplay? Что то похожее на то, когда делаешь проект в один exe файл?
Автор: KiLLius
Дата сообщения: 22.01.2013 22:06
Вечер добрый.
Подскажите пожалуйста. Появилась задача сделать видео - плэйлист. Имеется коротеньких 40 видео файлов по 15-20 секунд. Нужно реализовать что то на подобии фрйэма с видео. И соответственно список этих видео с описанием. Реально ли такое реализовать в AMS. И если реально то куда копать?
И если не реально подскажите в чём лучше это реализовать.
Автор: Zelibobo
Дата сообщения: 23.01.2013 00:21
Приветствую! Помогите с Button.SetVisible Суть в чем: нужно от одного нажатия кнопки №1 раскрывалась 1вая группа (в ней две кнопки №2 и №3, в первой группе при одном клике на кнопку №2 раскрывалась группа кнопок №4 и №5)
Так вот суть "глюка" не всегда с первого раза прячется-показывается 1вая или 2ая группа кнопок. При последующим клике все гуд. Помогите "запелить" сие действие.
Трудно как то обьяснить брал пример со справки:
Как сделать мне ...?
Сделать выпадающее меню.

Вот только мне с кнопочками нужно.
Это висит на Button1 (на Button2 соответственно 4 - 5)

Код:
if visible then
Button.SetVisible("Button2", false);
Button.SetVisible("Button3", false);
visible = false;
else
    Button.SetVisible("Button2", true);
    Button.SetVisible("Button3", true);
visible = true;
end
Автор: Robby
Дата сообщения: 23.01.2013 13:23
Zelibobo
у тебя кнопки №2 и №3 изначально видимые? Скрой их или во вкладке атрибутов или в коде. Твой код при первом нажатии всегда будет отображать кнопки, т.к. visible первоначально не существует будет выполнено условие после else. Следующее нажатие будет скрывать кнопки, ибо visible = true и условие if visible then выполниться. В твоем случае лучше показывать/скрывать кнопки в зависимости от их видимости

Код:
if Button.IsVisible("Button2") then
Button.SetVisible("Button2", false);
Button.SetVisible("Button3", false);

else
Button.SetVisible("Button2", true);
Button.SetVisible("Button3", true);
end
Автор: Marina_911
Дата сообщения: 25.01.2013 04:42
Спасибо, ребята, за классный форум и за интересную мне тему. Даже вопросы не надо задавать! Захожу на форум, читаю ваши сообщения, и все мои проблемы, связанные с программой, сразу же разрешаются.
Ещё раз ОГРОМНОЕ СПАСИБО!!!
Автор: Zelibobo
Дата сообщения: 29.01.2013 22:36
Robby Спасибо! это работает! Но, вот не задача , что то я не пойму вот этой строчки if Button.IsVisible("Button2") then
Т.е Я пытаюсь создать Autorun с кнопками, Есть, категории и есть выпадающие меню. Так вот с выпадающими меню с Вашим примером все ок, но вот если при клике на 2ю или 3ю категорию все равно остаются видимы кнопки 1й категории (все btn скрыты изначально) У меня прозьба к Вам , помогите как сделать так что бы при нажатии 2й категори (button-a) скрывалась вся первая:
Cat1(Audio) -> (AIMP)subbutton1_->buttonsub3->*.exe
(Winamp)subbutton2->(RUS/ENG)buttonsub4->*.exe
Cat2(Video)- > (KMplayer)button1Cat2->(RUS/ENG)buttonsub5->*.exe
button2->...
button3->...
у всех категорий есть субменю. Так вот при клике на категорию 2ю кнопки в 1й категории баттоны не прячутся сразу, только при повторном нажатии прячутся. Помогите разобраться с этим.
Если что могу выложить наработки в 8й версии.
------------------------
Пысы
Спасибо разобрался.
Автор: Robby
Дата сообщения: 31.01.2013 11:36
Zelibobo
запись
if Button.IsVisible("Button2") then
идентична
if Button.IsVisible("Button2")==true then
и звучит так, если кнопка Button2 видима, то выполняем действия...

tuz1979

Цитата:
Привет всем!Подскажите пожалуйста как отключить фоновую музыку на определенную страницу,бес кнопки?

Можно выключить музыку перед переходом на определенную страницу

Код: Audio.Stop(CHANNEL_BACKGROUND); -- останавливаем музыку
Page.Jump("Page 2"); -- переходим на страницу
Автор: tuz1979
Дата сообщения: 31.01.2013 23:03
Robby
Спасибо тебе большое!
Автор: tuz1979
Дата сообщения: 01.02.2013 23:18
Возможно ли создать страницы разного розмера?
например,первую сделать розмером 600Х400 а вторую 900Х700.
Автор: clubook
Дата сообщения: 02.02.2013 11:15
Посьба помочь - не могу сделать в этой версии чтобы ехе-файл имел картинку
как вложенная иконка и при наведении на ехе-файл - выскакивали все описания проекта.
вроде как обычно -проект-параметры - добавил иконкуа в версия- добавил все данные по проекту, по при сборке - ехе-файл - имеет стандартную картинку и описание файла - стандарное описание, ни названия моего проекта... вроде не первый год с этой прогой работаю... хотя и на примитивном уровне... может в этой версии/сборке /Версия: 8.0.7.0/
Автор: Lexua
Дата сообщения: 07.02.2013 21:30
Приветствую коллеги. Есть вопрос по такому поводу. Очень хочется прерывать выполнение скрипта по нажатию кнопки. Но к сожалению, во многих случаях AMS просто не даёт что либо нажимать, когда код выполняется. Ну плохо у нее с многозадачностью. Есть какие либо идеи по реализации сего?
Автор: qqwwrr
Дата сообщения: 09.02.2013 22:42
Приветствую! Есть такая проблемка.
Есть поиск по проекту, который ищет по ключевым словам.

Есть объект листбокс, в котором выдаются результаты поиска: Название страницы - ключевое слово.
Как сделать так, чтобы можно было пункту "Название страницы" назначить другой цвет шрифта? А то как-то не комильфо, когда всё одним цветом... Хотелось бы разделить визуально ключевое слово от названия...
Автор: Zloy_Gelud
Дата сообщения: 10.02.2013 10:21
Lexua
Посмотри в сторону lua lanes.
Автор: 25Gnom25
Дата сообщения: 10.02.2013 21:02
Здравствуйте. Я новичек в работе с АМS8, когда то немного разбирался с АМS4. Там была функция Hide All. Т.е. мне надо "потушить" одним кликом все изображения.
Подскажите можно ли это сделать в восьмой версии. Желательно что бы одним кликом "гасились" несколько нужных мне изображений.
Автор: Zloy_Gelud
Дата сообщения: 10.02.2013 21:09
25Gnom25

Цитата:
"потушить"


Цитата:
"гасились"

А теперь нормальным языком напиши, что тебе надо сделать. Где сделать? Во время создания проекта или во время демонстрации?
Автор: 25Gnom25
Дата сообщения: 10.02.2013 21:14
Сори за невнятные объяснения, я не знаю сленга.
есть функция Image.SetVisible("L4", false).
У меня есть несколько изображения которые надо скрыть. Использовать вышеуказанную функцию на каждое изображение неудобно, поскольку изображений много. Можно ли задать одну команду что бы скрыть все нужные мне изображения?

Добавлено:

Цитата:
Zloy_Gelud

помогите пожалуйсто...очень нужна это фукнция..

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

Предыдущая тема: память не может быть written


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