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

» Indigo Rose AutoPlay Media Studio

Автор: KerberX
Дата сообщения: 19.01.2016 15:50
А куда он её выводит то, в консоль? Для захвата вывода консоли я уже выкладывал код. Также в теме был код от Zloy_Gelud для этого же, но через MemoryEx. Ещё есть плагин CommandLine для этого.


Код: function os.capture(sCmd, bRaw)
local f = assert(io.popen(sCmd, "r"));
local s = assert(f:read("*a"));
f:close();
if bRaw == true then
return s;
else
s = string.gsub(s, "^%s+", "");
s = string.gsub(s, "%s+$", "");
s = string.gsub(s, "[\n\r]+", " ");
return s;
end
end

local s = os.capture("cmd.exe help");
Автор: Pahuchiy1
Дата сообщения: 19.01.2016 16:14
KerberX
Цитата:
А куда он её выводит то, в консоль?
да

Цитата:
os.capture("cmd.exe help");
непонятно как этим пользоваться.
Автор: Zloy_Gelud
Дата сообщения: 19.01.2016 16:25
Pahuchiy1
Качаете библиотеку mediainfo.dll: http://mediaarea.net/download/binary/libmediainfo0/0.7.81/MediaInfo_DLL_0.7.81_Windows_i386_WithoutInstaller.7z
Выполняете код:

Код: local sVideoPath = "D:\\Downloads\\video.mp4";
local MI = Library.Load("C:\\Users\\Slota\\Desktop\\MediaInfo.dll", false);
if MI then
    local pPath = MemoryEx.Allocate(2 * (#sVideoPath + 1));
    MemoryEx.String(pPath, -1, MEMEX_UNICODE, sVideoPath);

    local hMI = MI.MediaInfo_New();
    if (MI.MediaInfo_Open(hMI, pPath) ~= 0) then
        MI.MediaInfo_Option(0, 'Complete', '1');
        pInfo = MI.MediaInfo_Inform(hMI, 0);
        local sAllInfo = MemoryEx.String(pInfo, -1, MEMEX_UNICODE);
        TextFile.WriteFromString("C:\\MyFile.txt", sAllInfo);
    end
    MI.MediaInfo_Delete(0, hMI);
    MemoryEx.Free(pPath);
    MI:Close_();
end
Автор: Pahuchiy1
Дата сообщения: 19.01.2016 16:37
Zloy_Gelud получилось!!!!!
к примеру, мне нужен параметр Bit rate
Автор: Zloy_Gelud
Дата сообщения: 19.01.2016 16:40
Pahuchiy1

Цитата:
мне нужен параметр Bit rat

Какой именно?
Есть в общей инфе:

Цитата:
Overall bit rate : 588 Kbps

Есть для видеокадра:

Цитата:
Bit rate : 500 Kbps

Есть для аудипотока:

Цитата:
Bit rate : 64.0 Kbps
Автор: Pahuchiy1
Дата сообщения: 19.01.2016 16:49
да какая разница....принцип то наверное можно будет к любому параметру применить...в любом случае, это уже детали...пускай будет видеокадра.
Гораздо более насущный теперь вопрос:
Хочу получить исходный код со своей страницы контактов:

Цитата:
Цитата:
HTTP.SubmitSecure("https://www.fl.ru/contacts/", {}, SUBMITWEB_GET, 20, 443, {UserName="name", Password="Password"}, nil);


Но авторизацию этот код не проходит. Помогите.
Автор: Zloy_Gelud
Дата сообщения: 19.01.2016 17:53
Pahuchiy1

Цитата:
Но авторизацию этот код не проходит.

А с чего вы взяли, что он вообще должен "проходить"? Максимум (может и нет), где вы можете авторизоваться с помощью вашего кода, это для входа в панель управления вашим роутером.
А для авторизации на Фрилансе нужно изучать его механизм. Какие параметры отправляет на сайт, какие куки читает. Изучайте через инструменты разработчика браузера, Фиддлером и т.п. А потом уже юзать winhttp.
Автор: alexposad
Дата сообщения: 19.01.2016 19:44
KerberX


Цитата:
Поместить в On Show, а не в On Preload. Подробнее...


Спасибо тебе, добрый человек!!!
все получилось!!!
Автор: Grasss
Дата сообщения: 20.01.2016 19:35
Добрый вечер, как мне подключить скрипт?
Автор: KerberX
Дата сообщения: 20.01.2016 19:43
Grasss
У меня есть файл со скриптом здесь. http://rghost.ru/8fMnxvvkh
В файле такой код.

Код: Dialog.Message("External Script", debug.traceback());
Автор: Grasss
Дата сообщения: 20.01.2016 19:48
Хорошо, будем пробовать.
Автор: KerberX
Дата сообщения: 20.01.2016 22:41
Grasss
У программы есть справка. В ней написано за что отвечают остальные аргументы у функции. А без них работает только потому что обязательны только два первых аргумента, а остальные при их отсутствии заменяются на значения по умолчанию.
Автор: Grasss
Дата сообщения: 20.01.2016 23:14
Как прописать путь локального файла?
Автор: KerberX
Дата сообщения: 20.01.2016 23:17
local sScript = TextFile.ReadToString("C:\\Downloads\\1.lua");
loadstring(assert(sScript))();

Для запуска файла с диска лучше использовать dofile("C:\\Downloads\\1.lua");

Слеши в путях должны быть экранированы. То есть вместо одного "\" пишется два.
Автор: Grasss
Дата сообщения: 20.01.2016 23:34
Благодарю
Автор: KerberX
Дата сообщения: 21.01.2016 02:56
Заметил одну странность в библиотеке io.
У меня есть такая функция.

Код: function WriteFile(sFile, vData)
    local hFile = io.open(sFile, "w");
    if hFile ~= nil then
        hFile:setvbuf("no");
        hFile:write(vData);
        hFile:close();
    end
end
WriteFile("Info2.ini", "123\n456");
Автор: AntiWinLockerLive
Дата сообщения: 21.01.2016 08:23

Цитата:
Я записываю строку текста с разделителем "\n". Но в файле после записи кроме \n содержится и \r.
Так это чтобы с новой строчки текст начинался.
Я недавно с этим бился...
Дело в кодировки созданного файла.
У меня создавался Unix а надо было Windows. \n а надо было \n\r
Взял кусок скрипта по перекодировки и поменял в файле на нужную.

Код:
---utf8 decoder
function String.UnixToWindows(sText)
return String.Replace(sText, "\n", "\r\n", false);
end

function String.WindowsToUnix(sText)
return String.Replace(sText, "\r\n", "\n", false);
end

function TextFile.IsUnix(sString)
local sText = sString;
local nRet = String.Find(sText, "\r\n", 1, false);
if nRet == -1 then
return true;
else
return false;
end
end
Автор: Pahuchiy1
Дата сообщения: 21.01.2016 13:56
Поделитесь плагином SendKey
Или есть ещё какой-то способ послать (сэмулировать) клавиатурное нажатие?
Автор: KerberX
Дата сообщения: 21.01.2016 16:13
AntiWinLockerLive
Ты видимо не вник в суть поста. Библиотека io это стандартная библиотека Lua. И она в текстовом режиме при записи строки текста с разделителем строк меняет его на тот, который как ей кажется подходит лучше. А в двоичном режиме этого не происходит, что мне и было нужно.

Pahuchiy1
Этот плагин я не нашёл, но есть вот такой код.

Код: SendKeys = {};
SendKeysObject = luacom.CreateObject("WScript.Shell");

function SendKeys.Send(Keys)
    SendKeysObject:SendKeys(Keys);
end

-- Example: SendKeys.Send("Hello{ENTER}");
Автор: Pahuchiy1
Дата сообщения: 21.01.2016 18:46
KerberX
спасибо, буду пробовать. А как будет выглядеть в Вашем решении ctrl+c к примеру?
Автор: KerberX
Дата сообщения: 21.01.2016 18:54
Pahuchiy1
Если я правильно понял синтаксис этой команды то так.

Код: SendKeys.Send("{^ С}");
Автор: Pahuchiy1
Дата сообщения: 26.01.2016 15:26
Есть функция, содержащая в себе другие функции:

Цитата:
function main()
function1
function2
end

Так вот, при таком коде function1 и function2 как бы мешают друг другу. Появляются необъяснимые глюки в обеих функциях, несмотря на то что они никак между собой не связаны. В обех функциях есть контроль результата, и раньше времени function2 запускаться не должна.
Если написать так:

Цитата:
function main()
--function1
function2
end

или так:

Цитата:
function main()
function1
--function2
end

то каждая из функций отрабатывает исправно.
Методом тыка нашёл решение:

Цитата:
function main()
function1
Application.Sleep(10000)--примерное время первой фунции (если меньше - глюки)
function2
end

Почему так происходит? Разве function2 не должна выполняться ПОСЛЕ function1?
Автор: KerberX
Дата сообщения: 26.01.2016 15:49
Pahuchiy1

Цитата:
Почему так происходит? Разве function2 не должна выполняться ПОСЛЕ function1?

Должна и выполняется. Покажи лучше что представляют собой эти твои функции и как именно они "мешают" друг другу работать.
Автор: Pahuchiy1
Дата сообщения: 26.01.2016 16:14

Цитата:
upload_video("F:\\1.mp4","F:\\maxresdefault.jpg","my video", "super", "add",tTags,"myfuncat","myfuncat2")

В глобальных:
Цитата:

function upload_video(path_video,path_prev, sHead, sOpis, tagType_add_repl_not,tTags,login,pass)
    open_url("https://www.youtube.com/upload",login,pass)
    Application.Sleep(1000)
    ace("main\\upload_video.aip",path_video,path_prev, sHead, sOpis, tagType_add_repl_not,tTags)
end

function open_url(url,login,pass)
    if nb_process("Mozilla")== nil then
        File.Run("C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe", "", "", SW_SHOWNORMAL, false);    
    end
    Window.Restore(nb_process("Mozilla"))
    Window.SetOrder(nb_process("Mozilla"), HWND_TOP)
    Window.Maximize(nb_process("Mozilla"))
    ace("main\\open_firefox.aip",url,login,pass)
end

-------------------------------------------------------------------------------------------------------------------------------------------------------
function ace(...)
    for i=1, 10 do
        Application.Sleep(500)
        TextFile.WriteFromString("C:\\ace_temp\\to_ace\\"..i..".txt", "empty", false)
    end
    tKeys ={}
    for i, v in ipairs(arg) do
        tKeys[i] =v
    end
    ace_file=tKeys[1]
    if #tKeys>1 then --åñëè ÿ ïåðåäàþ àðãóìåíòû â ÀÑÅ
        for i=1, #tKeys-1 do
            if type(tKeys[i+1])=="table" then --åñëè òàáëèöà (äîïóñêàþòñÿ òîëüêî 1-óðîâíåâûå)
                TextFile.WriteFromTable("C:\\ace_temp\\to_ace\\"..i..".txt", tKeys[i+1], false)
                Application.Sleep(1000)
                TextFile.WriteFromString("C:\\ace_temp\\to_ace\\"..i..".txt", "\r\nend", true)--óêàçàíèå êîíöà ñïèñêà
            else
                TextFile.WriteFromString("C:\\ace_temp\\to_ace\\"..i..".txt", tKeys[i+1], false)
            end
            Application.Sleep(1000);
        end
    end
    File.Delete("C:\\ace_temp\\from_ace\\*.*", false, false, false, nil);
    File.Run("C:\\AutoClickExtreme\\AutoClicker.exe", "-play ".._SourceFolder.."\\AutoPlay\\Docs\\_distr\\DATA_ACE\\"..ace_file, "C:\\AutoClickExtreme\\", SW_SHOWNORMAL, false)
    repeat Application.Sleep(1000)
        repeat Application.Sleep(1000)
            repeat Application.Sleep(1000)
            until nb_process("Clicker")==nil
        until nb_process("Clicker")==nil
    until nb_process("Clicker")==nil
    tRet={}
    tNames={}
    tFiles=File.Find("C:\\ace_temp\\from_ace\\", "*.*", false, false, nil, nil)
    if tFiles~=nil then --åñëè ÀÑÅ ñîçäàëà ôàéëû
        for i=1, #tFiles do
            tNames[i]=file_name(tFiles[i])
        end    
        for i=1, #tNames do            
            tRet[tNames[i]] = TextFile.ReadToString("C:\\ace_temp\\from_ace\\"..tNames[i]..".txt");
        end
        --File.Run("C:\\AutoClickExtreme\\AutoClicker.exe", "-play F:\\tray_menu_3\\CD_Root\\AutoPlay\\Docs\\_distr\\DATA_ACE\\main\\empty.aip", "", SW_SHOWNORMAL, true)        
        return tRet
    end
end

мешают они тем что первая функция (действия автокликера) обрываются. Во второй функции автокликер начинает выполнять свои действия с середины. Экспериментировал я и с Shell.Execute и с File.Run и с ихними настройками ожидания окончания ...
nb_process - функция определяющая запущен ли процесс
Автор: KerberX
Дата сообщения: 26.01.2016 17:07
Pahuchiy1

Код: File.Run("C:\\AutoClickExtreme\\AutoClicker.exe", "-play ".._SourceFolder.."\\AutoPlay\\Docs\\_distr\\DATA_ACE\\"..ace_file, "C:\\AutoClickExtreme\\", SW_SHOWNORMAL, false);
-- Должно быть true, если ты хочешь чтобы AMS ждал завершения "AutoClicker.exe". То есть так:
File.Run("C:\\AutoClickExtreme\\AutoClicker.exe", "-play ".._SourceFolder.."\\AutoPlay\\Docs\\_distr\\DATA_ACE\\"..ace_file, "C:\\AutoClickExtreme\\", SW_SHOWNORMAL, true);
-- И тогда эта ужасная конструкция окажется не нужна.
repeat Application.Sleep(1000)
    repeat Application.Sleep(1000)
        repeat Application.Sleep(1000)
        until nb_process("Clicker")==nil
    until nb_process("Clicker")==nil
until nb_process("Clicker")==nil
Автор: Pahuchiy1
Дата сообщения: 26.01.2016 19:48

Цитата:
Должно быть true, если ты хочешь чтобы AMS ждал завершения "AutoClicker.exe"

на практике это никак не влияет на работу скрипта.

Цитата:
И тогда эта ужасная конструкция окажется не нужна

она, по сути, тоже никакого влияния не оказывает. Если её удалить ничего не изменится. Осталась после экспериментов, просто.
Буду пробовать более тщательно контролировать взаимодействие с файлами. Может, подскажешь как проконтролировать занят в данный момент файл каким-либо приложением или нет?
Автор: KerberX
Дата сообщения: 26.01.2016 20:10
Pahuchiy1

Цитата:
на практике это никак не влияет на работу скрипта.

Должно. Можешь проверить код возврата.

Код: local nRet = File.Run("C:\\AutoClickExtreme\\AutoClicker.exe", "-play ".._SourceFolder.."\\AutoPlay\\Docs\\_distr\\DATA_ACE\\"..ace_file, "C:\\AutoClickExtreme\\", SW_SHOWNORMAL, true);
Автор: LTJBukem
Дата сообщения: 27.01.2016 10:20
Подскажите.
Имеется кнопка, через которую происходит закачка файла командой HTTP.Download. У некоторых пользователей, при нажатии на неё, наблюдается ошибка "Не удалось открыть запрос." Есть предположения, что это из-за блокировки каким-нибудь антивирусом или фаерволом.
Вопрос: можно ли как-то сделать авторан изначально доверенным или может есть какая другая команда для закачки файлов из интернета?
Автор: 666zinger666
Дата сообщения: 28.01.2016 22:24
File.Run( _TempFolder.. "\\ACTIV\\1.exe", "", "", SW_SHOWNORMAL, false);
что не так после распаковки zip архива незапускает exe
Автор: KerberX
Дата сообщения: 28.01.2016 22:30
666zinger666
Самое очевидное что файла _TempFolder.. "\\ACTIV\\1.exe" просто нет. Можешь проверить что именно случилось вставив этот код после функции запуска файла.

Код: -- Test for error
local nErrorCode = Application.GetLastError();
if (nErrorCode ~= 0) then
    Dialog.Message("Error", _tblErrorMessages[nErrorCode], MB_OK, MB_ICONEXCLAMATION);
end

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

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


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