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

» Indigo Rose AutoPlay Media Studio

Автор: Zloy_Gelud
Дата сообщения: 21.10.2012 20:07
dallas page

Попробуй:

Код: Drive.IsSSD = function (sDriveLetter)
assert(type(luacom) == 'table')
sDriveLetter = String.Upper(String.Left(sDriveLetter, 1));
nDriveNumber = -1;
Ret = false;
local objWMIService = luacom.GetObject("winmgmts:\\\\.\\root\\CIMV2");
local objColItems = objWMIService:ExecQuery("SELECT * FROM Win32_LogicalDiskToPartition", "WQL", 48);
if (objColItems) then
local oEnum = luacom.GetEnumerator(objColItems);
local objItem = oEnum:Next();
while (objItem) do
if sDriveLetter == string.match(objItem:Dependent(), 'Win32_LogicalDisk.DeviceID="(.):"') then
nDriveNumber = tonumber(string.match(objItem:Antecedent(), 'Disk #(.), Partition'));
break;
end
objItem = oEnum:Next();
end
end
if (nDriveNumber ~= -1) then
objColItems = objWMIService:ExecQuery('SELECT * FROM Win32_DiskDrive', "WQL", 48);
if (objColItems) then
oEnum = luacom.GetEnumerator(objColItems);
objItem = oEnum:Next();
while (objItem) do
if (objItem:DeviceID() == "\\\\.\\PHYSICALDRIVE"..nDriveNumber) then
Ret = (String.Find(objItem:PNPDeviceID(), "SSD") ~= -1) and true or false;
end
objItem = oEnum:Next();
end
end
end
return Ret;
end

local IsSSD = Drive.IsSSD('C:');
Dialog.Message("",tostring(IsSSD));
Автор: dallas page
Дата сообщения: 22.10.2012 09:02
Zloy_Gelud работает, спасибо.
Автор: Zloy_Gelud
Дата сообщения: 22.10.2012 09:30
dallas page -- чуть исправил код выше (закрался небольшой косячок с названием переменной).
Автор: dallas page
Дата сообщения: 22.10.2012 10:22
Zloy_Gelud спасибо
Автор: FaritMatygullin
Дата сообщения: 22.10.2012 14:40
Доброго дня.
Подскажите, пожалуйста, возможно ли сделать так, чтобы при установке программы (к примеру, антивирус Доктор Веб), не нужно было нажимать кнопку далее каждый раз? Т.е. чтобы программа в фоновом режиме сама это делала.
Заранее спасибо.

Часа три искал ответа в данной теме. Не нашел.
Автор: Robby
Дата сообщения: 22.10.2012 16:13
FaritMatygullin
можно и больше искать и ничего не найти потому, что это тема не об этом. То, что ты хочешь - это тихая установка приложения и, как правило, реализуется она за счет самого инсталлятора с использованием специальных ключей, либо с использованием других технологий. В общем тебе сюда:
Таблица автоустановки
Типы инсталляторов
Приложения
Ключи для приложений (основы)
...
ну Google тебе в помощь
А если ты хочешь сделать оболочку на основе AutoPlay Media Studio, то ключи тихой установки нужно просто прописать в команду запуска.
Автор: FaritMatygullin
Дата сообщения: 22.10.2012 16:33
Robby спасибо огромное, буду изучать

Добавлено:
А кто может помочь создать образ в данной программе и прописать в нем автозапуск 40 программ(кол-во может стать немного больше или меньше). Т.е. программы должны устанавливаться фоном. Естественно не бесплатно. Телефон для связи 8 925 006 51 57 Фарит.
Автор: dallas page
Дата сообщения: 24.10.2012 11:17
Добрый день. Подскажите пожалуйста где я ошибся? Мне нужно, чтобы функция повторялась столько раз, сколько позиций в listbox. Но она выполняется только один раз.


Код: k = 0

function escapeme()
unch = ListBox.GetCount("ListBox1");

Progress.SetRange("Progress1", 0, unch);
Progress.SetStep("Progress1", 1);

k = k + 1

name = ListBox.GetItemText("ListBox1", k);
if (name ~= "") then
ListBox.SelectItem("ListBox1", k);
setup()
ListBox.SetItemCheck("ListBox1", k, BST_CHECKED);
Progress.StepIt("Progress1");
end

if k > unch then
return false;
else
return true;
end

end
Автор: Robby
Дата сообщения: 24.10.2012 12:03
dallas page
возможно тебе следует вызывать ее рекурсивно

Код: if k < unch then
escapeme();
end
Автор: tavria2
Дата сообщения: 24.10.2012 14:52
dallas page

Цитата:
Мне нужно, чтобы функция повторялась столько раз, сколько позиций в listbox.

Нужно в цикле поочередно обрабатывать все элементы listbox.

Код: function escapeme()
    unch = ListBox.GetCount("ListBox1");
    if (unch > 0) then
        Progress.SetRange("Progress1", 0, unch);

        for nIdx = 1, unch do
            name = ListBox.GetItemText("ListBox1", nIdx);
            if (name ~= "") then
                ListBox.SelectItem("ListBox1", nIdx);
                setup();
                ListBox.SetItemCheck("ListBox1", nIdx, BST_CHECKED);
                Progress.StepIt("Progress1");
            end
        end

        return true
    else
        return false
    end
end
Автор: dallas page
Дата сообщения: 24.10.2012 15:21
tavria2 спасибо. То что нужно.
Автор: bigbrain
Дата сообщения: 24.10.2012 21:15
Подскажите, как в LuaSQL получить в переменную данные из Fetch ()
С SQLite3Cursor:fetch({},"a") разобрался, тут все работает. К столбцам нужно обращаться по именам, например, row.name, row.email

Интересует вариант по умолчанию, где нумерованный массив.
Как не пробовал, пишет ошибку, must be string.

Делаю на SQLite, но очень хотелось бы совместимости с MySQL, а там драйвер в данный момент поддерживает только MySQLCursor:fetch() - без параметров.
Автор: Zloy_Gelud
Дата сообщения: 25.10.2012 13:20
bigbrain -- а зачем использовать модуль luasql, если есть нормальные плагины?




Цитата:
cur:fetch([table[,modestring]])
Retrieves the next row of results.
If fetch is called without parameters, the results will be returned directly to the caller. If fetch is called with a table, the results will be copied into the table and the changed table will be returned. In this case, an optional modestring parameter can be used. It is just a string indicating how the resulting table should be constructed. The mode string can contain:

"n"
the resulting table will have numerical indices (default)
"a"
the resulting table will have alphanumerical indices


The numerical indices are the positions of the fields in the SELECT statement; the alphanumerical indices are the names of the fields.
The optional table parameter is a table that should be used to store the next row. This allows the use of a unique table for many fetches, which can improve the overall performance.
There is no guarantee about the types of the results: they may or may not be converted to adequate Lua types by the driver. In the current implementation, the PostgreSQL and MySQL drivers return all values as strings while the ODBC and Oracle drivers convert them to Lua types.
Returns: data, as above, or nil if there are no more rows. Note that this method could return nil as a valid result.

.. думаю стОит попробовать SQLite3Cursor:fetch({},"n").
Автор: simply2
Дата сообщения: 26.10.2012 03:40
Подскажите пожалуйста как работать с данным кодом?

Global Functions
Код: _SourceFolder = _SourceFolder.."\\AutoPlay\\Docs";
Автор: Zloy_Gelud
Дата сообщения: 26.10.2012 10:59
simply2 -- какой неаккуратный код.

Цитата:
Текст из ComboBox_ItemText.txt – читается a из ComboBox_ItemData.txt код нет.

Неправда. Читается..
Чуть оптимизировал твой код.

Код: local ItemText = TextFile.ReadToTable(_SourceFolder.."\\ComboBox_ItemText.txt");
local TableCount = Table.Count(ItemText);
local ItemData = TextFile.ReadToTable(_SourceFolder.."\\ComboBox_ItemData.txt");
for x = 1, TableCount do
ComboBox.AddItem("ComboBox1", ItemText[x], ItemData[x]);
end
ComboBox.SetSelected("ComboBox1", 1);

-- проверка
Dialog.Message("Notice", ComboBox.GetItemData("ComboBox1", 4));
Автор: Robby
Дата сообщения: 26.10.2012 11:02
simply2
В самой программе есть очень хорошая справка с примерами.

Код: _SourceFolder = _SourceFolder.."\\AutoPlay\\Docs";
Автор: KerberX
Дата сообщения: 26.10.2012 14:08
А можно ли сделать так чтобы Input выглядел так?
Автор: Andy1969
Дата сообщения: 26.10.2012 14:08
Подскажите, можно ли определить команды для кнопок уже в Tree, чтоб одни и теже кнопки делали разные команды согласно выбранной ветке дерева?
Код?:
NodeProperties0 = Tree.GetNode("Tree1", "1");
NodeProperties1 = Tree.GetNode("Tree1", "1.1");
NodeProperties1 = Tree.GetNode("Tree1", "2");
NodeProperties1 = Tree.GetNode("Tree1", "2.1");

if NodeProperties0.Selected then
-- Instal essential for node 1
Button.SetVisible("Button6", false);
Paragraph.SetText("Paragraph1", "");
Image.Load("Image1", "AutoPlay\\Images\\antivir1.jpg");

else if NodeProperties1.Selected then
Button.SetVisible("Button6", true);
Image.Load("Image1", "AutoPlay\\Images\\avast-pro.jpg");
cText = TextFile.ReadToString("AutoPlay\\Docs\\Antivir\\about1.txt");
Paragraph.SetText("Paragraph1", cText);
end
end

И какую команду прописать для кнопки?
Автор: Zloy_Gelud
Дата сообщения: 26.10.2012 14:24
Andy1969

Цитата:
И какую команду прописать для кнопки?


Код: local strSelectedNode = Tree.GetSelectedNode("Tree1");
if (strSelectedNode == "1") then
-- blablabla
elseif (strSelectedNode == "1.1") then
-- ololo
end
Автор: KerberX
Дата сообщения: 26.10.2012 14:35
Мда... И то и то плохо. А через WinAPI нельзя? Я не знаю правда что через него можно сделать, а что нет.
Автор: Andy1969
Дата сообщения: 26.10.2012 14:35
Спасибо! поэксперементирую...
Автор: Zloy_Gelud
Дата сообщения: 26.10.2012 15:37
KerberX -- а чем плох второй вариант?
Автор: simply2
Дата сообщения: 26.10.2012 17:17
Спасибо за помощь и разъяснения Zloy_Gelud, Robby
Автор: KerberX
Дата сообщения: 26.10.2012 17:55
Zloy_Gelud, при растягивании изображение будет искажаться, а у меня длинные инпуты и разной длины. Также слишком много возни с этими изображениями. К тому же будет очень заметно на Win7, там ведь анимация при установке и снятии фокуса с объекта.
Автор: Zloy_Gelud
Дата сообщения: 26.10.2012 18:11
KerberX

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

Можно сделать составную подложку и растягивать только ее среднюю часть.

Цитата:
К тому же будет очень заметно на Win7, там ведь анимация при установке и снятии фокуса с объекта.

С этим уже сложнее. Хотя Input имеет событие On Focus.
Автор: KerberX
Дата сообщения: 26.10.2012 18:37

Цитата:
Можно сделать составную подложку и растягивать только ее среднюю часть.

О, вот это уже интересно. Как это делается и применимо ли такое для кнопки (Button)? Или я не о том подумал?


Цитата:
С этим уже сложнее. Хотя Input имеет событие On Focus.

Вот только для снятия фокуса события нет. Можно, конечно, и другим способом определять снят фокус или нет, но это совершенно неудобно, по крайней мере тем способом, который известен мне.
Автор: Zloy_Gelud
Дата сообщения: 26.10.2012 18:55
KerberX --я не знаю о чем ты подумал, но напишу пример.
Ну, например, необходимо сделать подложку для объекта Input. Делаем его без границ и накладываем на 3 изображения.

Левая и правые части при необходимости могут изменять только свое положение. Средняя часть может изменять как свое положение, так и свои размеры. Далее пишем код для сей реализации. Вот и вся сложность.
Автор: KerberX
Дата сообщения: 26.10.2012 19:00
Да, я не так понял. Я подумал что где-то есть возможность включить такое для кнопки или для картинки в самой AMS. Хорошо бы было.
Автор: tavria2
Дата сообщения: 26.10.2012 19:21
KerberX, Zloy_Gelud
Может быть я не совсем понял, но мне кажется, что задача была заставить Input отображаться в стиле установленном ОС.
Если это, так то достаточно изменить стиль Input с помощью WinApi.

Global Functions
Код: function SetInputStyle(sInputName)
    local GWL_STYLE = -16;

    local WS_CHILD = 0x40000000;
    local WS_VISIBLE = 0x10000000;
    local WS_TABSTOP = 0x00010000;
    local ES_AUTOHSCROLL = 0x0080;

    local hWnd = Input.GetProperties(sInputName).WindowHandle;
    local nStyle = WS_CHILD + WS_VISIBLE + WS_TABSTOP + ES_AUTOHSCROLL;
    DLL.CallFunction("user32.dll", "SetWindowLongA", hWnd..","..GWL_STYLE..","..nStyle, DLL_RETURN_TYPE_LONG, DLL_CALL_STDCALL);

    -- перерисовка Input
    local tSize = Input.GetSize(sInputName);
    Input.SetSize(sInputName, tSize.Width, tSize.Height + 1);
    Input.SetSize(sInputName, tSize.Width, tSize.Height);
end
Автор: KerberX
Дата сообщения: 26.10.2012 19:24
О, класс. Tavria2, большое спасибо. Хорошо бы уметь самому так делать.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

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


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