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

» Indigo Rose AutoPlay Media Studio

Автор: ra700
Дата сообщения: 03.10.2012 11:23
Кому интересна эта тема, вот результат:

OnClick:

Код: function Escape(v)
if (v == nil) then return ""; end
if (type(v) == "table") then return Table.Concat(v, ", "); end
if (type(v) == "boolean") then
if (v == true) then
return "Yes";
else
return "No";
end
end
return v;
end

function WMIDateStringToDate(dtmDate)
if dtmDate then
dtmDate = tostring(dtmDate);
return (String.Mid(dtmDate, 7, 2) .. "/" ..
String.Mid(dtmDate, 5, 2) .. "/" ..
String.Left(dtmDate, 4) .. " " ..
String.Mid(dtmDate, 9, 2) .. ":" ..
String.Mid(dtmDate, 11, 2) .. ":" ..
String.Mid(dtmDate,13, 2));
else
return "";
end
end

local strOutputTitle = "";
local strOutput = "";
strOutputTitle = strOutputTitle .. "Computer: localhost\r\n";
strOutputTitle = strOutputTitle .. "==========================================\r\n\r\n";
local objWMIService = luacom.GetObject("winmgmts:\\\\.\\root\\CIMV2");
local objColItems = objWMIService:ExecQuery("SELECT * FROM Win32_BaseBoard", "WQL", 48);

if (objColItems) then
local oEnum = luacom.GetEnumerator(objColItems);
local objItem = oEnum:Next();
while (objItem) do
strOutput = strOutput .. "Caption: " .. Escape(objItem:Caption()) .. "\r\n";
strOutput = strOutput .. "ConfigOptions: " .. Escape(objItem.ConfigOptions(0)) .. "\r\n";
strOutput = strOutput .. "CreationClassName: " .. Escape(objItem:CreationClassName()) .. "\r\n";
strOutput = strOutput .. "Depth: " .. Escape(objItem:Depth()) .. "\r\n";
strOutput = strOutput .. "Description: " .. Escape(objItem:Description()) .. "\r\n";
strOutput = strOutput .. "Height: " .. Escape(objItem:Height()) .. "\r\n";
strOutput = strOutput .. "HostingBoard: " .. Escape(objItem:HostingBoard()) .. "\r\n";
strOutput = strOutput .. "HotSwappable: " .. Escape(objItem:HotSwappable()) .. "\r\n";
strOutput = strOutput .. "InstallDate: " .. WMIDateStringToDate(objItem:InstallDate()) .. "\r\n";
strOutput = strOutput .. "Manufacturer: " .. Escape(objItem:Manufacturer()) .. "\r\n";
strOutput = strOutput .. "Model: " .. Escape(objItem:Model()) .. "\r\n";
strOutput = strOutput .. "Name: " .. Escape(objItem:Name()) .. "\r\n";
strOutput = strOutput .. "OtherIdentifyingInfo: " .. Escape(objItem:OtherIdentifyingInfo()) .. "\r\n";
strOutput = strOutput .. "PartNumber: " .. Escape(objItem:PartNumber()) .. "\r\n";
strOutput = strOutput .. "PoweredOn: " .. Escape(objItem:PoweredOn()) .. "\r\n";
strOutput = strOutput .. "Product: " .. Escape(objItem:Product()) .. "\r\n";
strOutput = strOutput .. "Removable: " .. Escape(objItem:Removable()) .. "\r\n";
strOutput = strOutput .. "Replaceable: " .. Escape(objItem:Replaceable()) .. "\r\n";
strOutput = strOutput .. "RequirementsDescription: " .. Escape(objItem:RequirementsDescription()) .. "\r\n";
strOutput = strOutput .. "RequiresDaughterBoard: " .. Escape(objItem:RequiresDaughterBoard()) .. "\r\n";
strOutput = strOutput .. "SerialNumber: " .. Escape(objItem:SerialNumber()) .. "\r\n";
strOutput = strOutput .. "SKU: " .. Escape(objItem:SKU()) .. "\r\n";
strOutput = strOutput .. "SlotLayout: " .. Escape(objItem:SlotLayout()) .. "\r\n";
strOutput = strOutput .. "SpecialRequirements: " .. Escape(objItem:SpecialRequirements()) .. "\r\n";
strOutput = strOutput .. "Status: " .. Escape(objItem:Status()) .. "\r\n";
strOutput = strOutput .. "Tag: " .. Escape(objItem:Tag()) .. "\r\n";
strOutput = strOutput .. "Version: " .. Escape(objItem:Version()) .. "\r\n";
strOutput = strOutput .. "Weight: " .. Escape(objItem:Weight()) .. "\r\n";
strOutput = strOutput .. "Width: " .. Escape(objItem:Width()) .. "\r\n";
if Dialog.Message("WMI Output", strOutputTitle .. strOutput, 1) == 2 then break end
Output = "";
objItem = oEnum:Next();
end
else
Dialog.Message("WMI Output", "No WMI Objects Found for class: Win32_BaseBoard");
end
Автор: Robby
Дата сообщения: 03.10.2012 12:20
Zloy_Gelud
Можно пример с использованием SciLexer.dll в AMS?
Автор: Zloy_Gelud
Дата сообщения: 03.10.2012 12:25
Robby -- работаю над этим.
Автор: lerik2703
Дата сообщения: 03.10.2012 15:11
ra700

Цитата:
В моем случае задача стоит не ЧТО защитить, а КАК защитить.

нет ну если взять ещё в руки паяльник, подучить язык микроконтроллеров, и организовать защиту не микроконтроллере
Автор: Zloy_Gelud
Дата сообщения: 03.10.2012 15:20
Накатал пример работы с SciLexer.dll в AMS. Кому надо - забирайте.
http://yadi.sk/d/_GBJ2Iah0-s0C
Организован пример раскраски языка LUA + пару действий AMS. Кому надо - добавите другие или исправите.
PS. Scintilla имеет туеву кучу действий по офрмлению редактора (типа фолдинга и др.). Кому интересно, смотрите официальную документацию.
Автор: BASHKA123
Дата сообщения: 03.10.2012 20:54
[more] Здравствуйте еще раз,спасибо за ту помощь, у меня получилось.
Но когда я ставлю в своем сценарии:
function ZIP_CALLBACK(...)
if arg[3] == ZIP_STATUS_MAJOR then
Progress.SetCurrentPos("Progress1", arg[2]);
end
return true;
end
Progress.SetVisible("Progress1", true);

bRadioValue = CheckBox.GetChecked("CheckBox1")
if bRadioValue then
    -- Agree
    Label.SetText("Label2", "General");
    
     Zip.Extract("C:\\Objects.zip", {"*.*"}, "C:\\My Folder", true, true, "", ZIP_OVERWRITE_ALWAYS, ZIP_CALLBACK);
end
if bRadioValue then
CheckBox.SetChecked("CheckBox2")
    -- Agree
    Label.SetText("Label2", "General zero hour");
     Zip.Extract("C:\\Objects2.zip", {"*.*"}, "C:\\My Folder2", true, true, "", ZIP_OVERWRITE_ALWAYS, ZIP_CALLBACK);
end

вот эту фигню Page.Jump("Page2") в начале или в середине,
то у меня он просто переходит на Page2 и ничего не происходит.
У меня на Page1 находятся флажки и сама кнопка где находиться сценарий,а на Page2 сам Progress1.
Хочется чтобы когда нажимаешь на кнопку, автоматом перешло Page2 с установкой, а по завершению установки переходило к Page3.
Есть подсказки? [/more]
Автор: SabreFC
Дата сообщения: 04.10.2012 10:11
Уважаемые гуру! Подскажите плиз, срочно ОЧЕНЬ надо!
Есть 2 страницы с web-объектами, на каждой странице кнопка перехода на другую. Если я нажал на кнопку 1 - грузится страница1 с объектом web1 и отображается содержимое страницы index1.html, при переходе на стр.2 отображается объект web2 и грузится index2.html. А проблема в том, что при переходе обратно со страницы 2 на стр. 1 содержимое объекта web1 не загружается. В чем может быть трабл, не могу понять, голова уже трещит по швам.....(((((

Добавлено:
Все, всем спасибо, допетрил наконец-то.... Чтобы не было зависона надо прописать в свойствах страницы во вкладке On Show через Web.LoadURL, а ссылку из веб-объекта на страницу убрать.
Автор: ra700
Дата сообщения: 04.10.2012 11:27
Свой опыт - он самый ценный!
Автор: KerberX
Дата сообщения: 04.10.2012 13:50
Zloy_Gelud, большое спасибо за пример. Только не объяснишь ли как сделать функции получения текста (GetText), вставки текста (InsertText) и получения его длины. SetText у меня сделать получилось, но с остальными не получается. Хотелось бы понять как эти команды правильно писать.
Автор: Zloy_Gelud
Дата сообщения: 04.10.2012 15:35
KerberX -- по идее, код

Код: Sci.GetText = function (hWnd)
local Ret = "";
local nLen = Sci.SendMessage(hWnd, SCI_GETTEXT, 0, 0);
local hBuf = Memory.Allocate(nLen + 1);
Sci.SendMessage(hWnd, SCI_GETTEXT, nLen, hBuf);
Ret = Memory.GetString(hBuf, -1, "Ascii");
Memory.Free(hBuf);
return Ret;
end
local sText = Sci.GetText(hSci);
Dialog.Message("Notice", sText);
Автор: KerberX
Дата сообщения: 04.10.2012 16:04
А без Memory нельзя? Возможно это не очень хороший пример, но в объект-плагине Scintilla с amsplugins это было так:

Код:
nlen = Scintilla.SendMessage("Plugin1",activeTab, "num",SCI_GETLENGTH, "num", 0, "num",0);
ret , text = Scintilla.SendMessage("Plugin1", activeTab, "num", SCI_GETTEXT, "num", nlen+1, "pstr", nlen);
Автор: Zloy_Gelud
Дата сообщения: 04.10.2012 16:10
KerberX

Цитата:
А без Memory нельзя?

Нельзя.

Цитата:
Возможно ли что оно и здесь также работает?

Нет.
Автор: tavria2
Дата сообщения: 04.10.2012 16:24
Zloy_Gelud
Код правильный, но немного напутал с размерами...
Код: Sci.GetText = function (hWnd)
local Ret = "";
local nLen = Sci.SendMessage(hWnd, SCI_GETTEXT, 0, 0) + 1;
local hBuf = Memory.Allocate(nLen);
Sci.SendMessage(hWnd, SCI_GETTEXT, nLen, hBuf);
Ret = Memory.GetString(hBuf, -1, "Ascii");
Memory.Free(hBuf);
return Ret;
end
local sText = Sci.GetText(hSci);
Dialog.Message("Notice", sText);
Автор: Zloy_Gelud
Дата сообщения: 04.10.2012 16:24
KerberX


Код: Sci.GetText = function (hWnd)
local Ret = "";
local nLen = Sci.SendMessage(hWnd, SCI_GETTEXT, 0, 0);
local hBuf = Memory.Allocate(nLen + 1);

Sci.SendMessage(hWnd, SCI_GETTEXT, (nLen + 1), hBuf);
Ret = Memory.GetString(hBuf, -1, "Ascii");
Memory.Free(hBuf);
return Ret;
end
local sText = Sci.GetText(hSci);
Dialog.Message("Notice", sText);
Автор: KerberX
Дата сообщения: 04.10.2012 16:25
О, спасибо. Жалко что с Memory.
Автор: Zloy_Gelud
Дата сообщения: 04.10.2012 16:27
tavria2 -- ога. Бывает туплю. Особенно под конец рабочего дня.

Добавлено:
KerberX -- еще парочка функций.

Код: Sci.InserText = function (hWnd, nPos, sText)
Sci.SendMessage(hWnd, SCI_INSERTTEXT, nPos, sText);
end

Sci.Clear = function (hWnd)
Sci.SendMessage(hWnd, SCI_CLEARALL, 0, 0);
end

Sci.InserText(hSci, 10, "Ololo");
Application.Sleep(1000);
Sci.Clear(hSci);
Автор: KerberX
Дата сообщения: 04.10.2012 17:24
Спасибо за функции. Я придумал способ обойтись без Memory.


Код: local nLen = Sci.SendMessage(hSci, SCI_GETLENGTH, 0, 0);
local sText = "";
for i = 0, nLen do
    sText = sText..String.Char(Sci.SendMessage(hSci, SCI_GETCHARAT, i, 0));
end
Автор: tavria2
Дата сообщения: 04.10.2012 21:50
KerberX

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

Скорее всего это баг Scintilla.

Кстати, выяснилась причина бага при клавиатурном вводе русских символов в плагине от reteset.
По непонятной мне причине, такой эффект вызывает сабклассирование окна Scintilla.
Этого-же эффекта можно добиться и в примере от Zloy_Gelud, применив сабкласс к окну Scintilla:
Код: function Subclass(hWnd, uMsg, wParam, lParam)
--
end

Memory.CreateWindowSubClass(hSci, 0, "Subclass");
Автор: KerberX
Дата сообщения: 04.10.2012 22:05
Я не совсем понимаю этот механизм. Ладно. Тогда можно ли избавиться от этого бага в плагине от reteset?
Автор: tavria2
Дата сообщения: 04.10.2012 22:16
KerberX

Цитата:
Тогда можно ли избавиться от этого бага в плагине от reteset?

Нет, т.к. это находится в скомпилированном плагине и недоступно для правки.
Автор установил сабкласс на окно Scintilla, чтобы ловить его сообщения и в зависимости от них, формировать нужные события.
Автор: KerberX
Дата сообщения: 05.10.2012 12:24
Чёрт, ещё проблема. SetText у меня работает, но при вставке большого текста (4700 строк кода) программа крашится. В чём проблема?

Код:
Sci.SendMessage(hSci, SCI_SETTEXT, 0, Text);
Автор: Zloy_Gelud
Дата сообщения: 05.10.2012 12:43
KerberX

Цитата:
В чём проблема?

В большом куске кода?

Добавлено:
Проверил на своем примере. Нормально вставил больше 5к строк.
Автор: KerberX
Дата сообщения: 05.10.2012 12:52
Да, очень похоже, 2000 с чем-то влезают. Это у скинтиллы такой баг что-ли?

И на твоём примере крашится. У меня наверное что-то с системой.
Автор: Zloy_Gelud
Дата сообщения: 05.10.2012 12:58
KerberX

Цитата:
Да, очень похоже, 2000 с чем-то влезают. Это у скинтиллы такой баг что-ли?



Цитата:
Zloy_Gelud
> Проверил на своем примере. Нормально вставил больше 5к строк.

Автор: chymax3m
Дата сообщения: 05.10.2012 19:43
Не поможет кто прикрутить SumatraPDF в качестве плагина для просмотра djvu файлов, что-то на подобе того как это сделано с Adobe Reader?
Автор: Jacsonn
Дата сообщения: 06.10.2012 00:10
Знаю что есть такая тема в шапке, называется "Активация кнопок по информации из реестра", но у меня не получается ни спрятать кнопку, ни менять надпись кнопки, только запускать файл! Всё рассовывал по местам:
*OnPreload:
Page.StartTimer(100);
*OnTimer:
-- путь к файлу, который запускает игру
strRunGamePath = Registry.GetValue(HKEY_LOCAL_MACHINE, "Software\\My Game", "Path", true).."\\Game.exe";
-- путь к инстоллятору игры
strActPath = _SourceFolder.."\\setup.exe";

-- если игра установлена
if (Registry.DoesKeyExist(HKEY_LOCAL_MACHINE, "Software\\My Game") == true) then
-- меняем на путь к деинстоллятору
strActPath = Registry.GetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\Game_is1", "UninstallString", true);
-- активируем кнопку "Запустить"
Button.SetEnabled("Button1", true);
-- переименовываем кнопку "Установить" на "Удалить"
Button.SetText("Button2", "Удалить");
end
и кнопки! но никак
Хотя подождите пока с моим вопросом, может я сам решу!

Автор: Zloy_Gelud
Дата сообщения: 06.10.2012 08:58
chymax3m -- если ты найдешь или напишешь ocx-библиотеку SumatraPDF, то может и поможем.
Автор: Jacsonn
Дата сообщения: 06.10.2012 15:11
В скрипте "Активация кнопок по информации из реестра" разобрался во всём кроме одного- кнопка Запустить (Button1) всегда активна даже когда приложение не установлено, но приложение запускает, эт радует. Быть может мой косяк, не отрицаю, пока ещё посижу с кнопкой. А спросить хотел вот что: У меня в инсталляке три приложения, допустим- Program_1, Program_2, Program_3, а перед установкой можно выбирать устанавливать всё сразу или по отдельности! Вопрос: как сделать, что-бы когда установится Program_1, кнопка "установить" была кнопкой "установить" и появлялась кнопка "запустить" (Program_1), когда установится Program_2, кнопка "установить" была кнопкой "установить" и появлялась кнопка "запустить" (Program_2), когда установится Program_3, кнопка "установить" была кнопкой "удалить" и появлялась кнопка "запустить" Program_3. Надеюсь не слишком растянул Спасибо!
Автор: chymax3m
Дата сообщения: 06.10.2012 15:12

Цитата:
если ты найдешь или напишешь ocx-библиотеку SumatraPDF, то может и поможем

Извините, но я не програмист, просто человек которому нравится решать интересные задачи в разных сферах. По поводу SumatraPDF, так возникла идея создать оболочку для электронной библиотеки, но AMS, как найболее простая и подходящея для этой цели программа, не работает с djvu форматом а он более компактный и у меня очень много книг в этом формате. SumatraPDF является продуктом с открытым кодом поддерживаемим консольные команды, + читает pdf и djvu. Так вот, на одном из оф. сайтов (форумов) написано что ее (Sumatr-у) можно использовать в качестве плагина для интернет браузера и для разного рода просмотрщиков (как это реализовано в Total Commander PowerPack). Вот я и подумал, что здесь помогут, но, к сожелению о ocx-библиотеках, я ничего не знаю. Если что-то нарою то конечно выложу и отпишусь.
Спасибо за ответ
Автор: Zloy_Gelud
Дата сообщения: 06.10.2012 15:40
chymax3m

Цитата:
можно использовать в качестве плагина для интернет браузера и для разного рода просмотрщиков (как это реализовано в Total Commander PowerPack)

Я фиг знаю как это у них сделано, но для AMS необходим ActiveX объект, имхо конечно.



Jacsonn
В таймере необходимо мониторить завершение процесса установки программы. Если процесс исчез, значит прога установилась -> активируем кнопку.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

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


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