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

» Indigo Rose AutoPlay Media Studio

Автор: Pus21
Дата сообщения: 20.08.2015 15:45
Спасибо, буду знать.
Автор: Robby
Дата сообщения: 20.08.2015 16:42
KerberX
" > NUL" - символ > перенаправляет вывод результата выполнения команды (по умолчанию сообщения выводятся на экран)
NUL - это пустое устройство.
Таким образом " > NUL" перенаправляет вывод всех результатов выполнения команды на устройство NUL, т.е. в никуда. Этим достигается подавление вывода всех сообщений которые выводит выполняемая команда, в том числе и об ошибках.

Автор: Pus21
Дата сообщения: 20.08.2015 17:16
Robby
А какую функцию выполняет строчка [choice /N /T 2 /C 7 /D 7 > NUL]? Я если честно сам не понимаю, ибо команду взял готовую.

В принципе процесс explorer.exe можно закрыть и так:

local processes = System.EnumerateProcesses();
for j, file_path in pairs(processes) do
file = String.SplitPath(file_path);
if (String.Lower(file.Filename..file.Extension)) == "explorer.exe" then
System.TerminateProcess(j);
end
end

Но он тут же стартует обратно, не смотря на то что у File.exe стоит параметр true (ждать завершения).
Автор: Robby
Дата сообщения: 20.08.2015 19:17
Pus21
CHOICE [/C список] [/N] [/CS] [/T тайм-аут /D элемент] [/M текст]

Эта программа позволяет выбирать элемент из списка элементов
и возвращает индекс выбранного элемента.

Другими словами, команда Choice позволяет сделать командные файлы интерактивными.

[more=Подробнее]
CHOICE [/C список] [/N] [/CS] [/T тайм-аут /D элемент] [/M текст]

Описание.
Эта программа позволяет выбирать элемент из списка элементов
и возвращает индекс выбранного элемента.

Параметры:
/C список Создаваемый список выбираемых элементов.
Список по умолчанию "YN".

/N Скрытие списка элементов в приглашении.
Перед приглашением выводится сообщение
и элементы остаются доступными для выбора.

/CS Включение учета регистра при выборе элементов.
По умолчание в программе регистр символов не учитывается.

/T тайм-аут Число секунд перед выбором элемента по умолчанию.
Допустимыми являются значения от 0 до 9999.
Если указан 0, отсутствует пауза перед выбором
элемента по умолчанию.

/D элемент Элемент, выбираемый по умолчанию через nnnn секунд.
Символ должен присутствовать в наборе элементов
в параметре /C; значение nnnn задается в параметре /T.

/M текст Сообщение, отображаемое перед
приглашением. Если не указано, программа
выводит только приглашение.

/? Вывод справки по использованию.

Примечание
Переменная среды ERRORLEVEL получает значение индекса
клавиши, соответствующей выбранному элементу. Первый элемент
в списке возвращает значение 1, второй - 2 и т.д.
Если пользователь нажимает клавишу, не соответствующую допустимому
выбору, подается звуковой сигнал. Если обнаруживается ошибка,
возвращается значение ERRORLEVEL 255. Если нажимаются клавиши
CTRL+BREAK или CTRL+C, программа возвращает значение ERRORLEVEL 0.
При использовании параметров ERRORLEVEL в пакетной программе их
следует перечислять по убыванию.

Примеры:
CHOICE /?
CHOICE /C YNC /M "Y - Да, N - Нет, C - Отмена."
CHOICE /T 10 /C ync /CS /D y
CHOICE /C ab /M "a" для выбора параметра 1 и "b" для выбора параметра 2.
CHOICE /C ab /N /M "a" для выбора параметра 1 и "b" для выбора параметра 2.

Чтобы понять, как она работает, рассмотрим базовый вариант команды:

Choice /M "Продолжить"

Если ввести эту команду в окне командной строки и нажать [Enter], появится следующее сообщение:
Продолжить [Y,N]?

Текст, указанный после параметра /m, превращается в сообщение. Выбор [Y,N]? команда Choice добавляет автоматически, и это варианты по умолчанию. Если нажать [Y], команда возвращает значение 1, если [N] - значение 2. Значение задается с помощью переменной среды Errorlevel.
Теперь рассмотрим более полноценный пример.

Choice /M "Хотите ли вы продолжить?"
If Errorlevel 2 Goto No
If Errorlevel 1 Goto Yes
Goto End
:No
Echo Вы выбрали Нет
Goto End

:Yes
Echo Вы выбрали Да
:End

[/more]

Автор: Pus21
Дата сообщения: 20.08.2015 19:54
Robby
Это я читал, с "Да" и "Нет" все понятно, мне непонятно за что она отвечает в этой процедуре, что происходит между закрытием приложения и стартом explorer?
Автор: Robby
Дата сообщения: 20.08.2015 21:57
Pus21

Разбор параметров команды:
/N - скрывает вывод элементов списка
/T 2 - задает 2 сек. паузу перед выбором элемента по умолчанию
/C 7 - список с одним пунктом со значением 7
/D 7 - элемент списка (7) выбираемый по умолчанию через /T 2 (2 сек)

Получается такая картина: создается список вариантов выбора с одним элементом 7, список скрывается, через две секунды выбирается пункт по умолчанию 7. Таким образом все что делает эта строка - задает паузу в 2 сек. между командами File.exe и start /B explorer.exe
Автор: Cmaster2K
Дата сообщения: 21.08.2015 05:32
разобрался...
Автор: Baltazar500
Дата сообщения: 21.08.2015 16:10
KerberX
Цитата:
Вот код который сделает то что нужно.
спасибо, на базе этого сваял то, что мне нужно (с несколькими переделками)
Цитата:
Я вроде понял чем это должно было быть. Это называется конкатенация. Она выполняется используя оператор .. (две точки). Например:
за это тройное спасибо !!! это сократило кучу не нужных строк до 1-й или 2-х (длииинных, но при этом более удобных для восприятия)
Автор: 11_nik_11
Дата сообщения: 22.08.2015 20:39
Доброго времени суток.
Решил написать бота с визуальной оболочкой, посоветовали эту программу.
У меня есть небольшой ряд вопросов, если не затруднит, прошу ответить.
1)Можно ли сделать "привязку к окну", чтобы производились клики в определённое окно, будь оно перекрыто другим.
2)Можно ли вообще на этой программе написать бота, не прибегая к VS(Visual Studio), или может быть есть другие программы подходящие под мою задачу.
3)Есть справочный материал на русском, с распиской каждой команды? Какими справочными материалами пользуетесь вы? Я нашёл только http://www.lua.org/manual/5.1/
За помощь буду очень благодарен!
Автор: KerberX
Дата сообщения: 22.08.2015 23:14
11_nik_11
1. То есть при запущенной программе если ткнуть куда-нибудь на рабочем столе (например), то программа об этом узнает?

Я не знаю (или не помню) способа сделать это. Скорее всего придётся что-то делать в WinAPI. Если узнаю что-нибудь, то напишу здесь.

2. Зависит от того, что требуется от бота. Хотя могу посоветовать обратить внимание на AutoIt.
3. Перевод от collagen: https://yadi.sk/d/hqE5Guz-ibggz
Автор: 11_nik_11
Дата сообщения: 23.08.2015 01:12
KerberX, да именно WinAPI. Я вообще хочу что-то наподобие
https://pp.vk.me/c622726/v622726435/4205f/i12so722Xq8.jpg
Автор: KerberX
Дата сообщения: 23.08.2015 01:29
11_nik_11
Я несколько сомневаюсь что через AMS можно сделать такого бота. Хотя может быть я чего-нибудь не знаю.
Автор: 11_nik_11
Дата сообщения: 23.08.2015 01:38
KerberX
А кроме VS на чём нибудь можно?
Автор: KerberX
Дата сообщения: 23.08.2015 15:07
11_nik_11
Не знаю, я никогда не создавал ботов. Да и в AMS+Lua я не мастер, так что может быть в AMS это возможно. Ну и, как я уже сказал, можно посмотреть AutoIt.
Автор: Pus21
Дата сообщения: 27.08.2015 14:43
KerberX

Цитата:
Получается такая картина: создается список вариантов выбора с одним элементом 7, список скрывается, через две секунды выбирается пункт по умолчанию 7. Таким образом все что делает эта строка - задает паузу в 2 сек. между командами File.exe и start /B explorer.exe
То есть эту строчку [ choice /N /T 2 /C 7 /D 7 > NUL ] можно заменить на [ sleep 2 ]?

Здравствуйте.

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

Определяю наличие файлов с расширением .txt в директории Folder, следующей командой:

local tFiles = File.Find(_SourceFolder.."\\Folder\\", "*.txt", false, false, nil, nil);

а потом архивирую их:

Zip.Add(_SourceFolder.."\\File.zip", {_SourceFolder.."\\Folder\\*.txt"}, true, "", 9, nil, false);

Но мне нужно, чтобы наличие txt проверялось не только в директории Folder, но и в поддиректориях, а потом файлы txt архивировались, без пути, (просто архив с txt файлами).

Помогите ПЛЗ.
Автор: KerberX
Дата сообщения: 27.08.2015 15:21
Pus21

Цитата:
То есть эту строчку [ choice /N /T 2 /C 7 /D 7 > NUL ] можно заменить на [ sleep 2 ]?

Да. Application.Sleep(2000); -- Время в миллисекундах.


Цитата:
Определяю наличие файлов с расширением .txt в директории Folder, следующей командой:
...


Код: local tFiles = File.Find(_SourceFolder.."\\Folder\\", "*.txt", true, false, nil, nil); -- Ищем все .txt файлы в указанной ппаке и её подпапках (аргумент 3 = true).
if tFiles ~= nil then
    Zip.Add(_SourceFolder.."\\File.zip", tFiles, false, "", 9, nil, false); -- Архивируем полученный список
end
Автор: Pus21
Дата сообщения: 27.08.2015 15:42
KerberX

Цитата:
Да. Application.Sleep(2000); -- Время в миллисекундах.

Я имел в виду CMD:

result = File.Run(_SystemFolder.."\\cmd.exe", "/C choice /N /T 2 /C 7 /D 7 > NUL", _SystemFolder.."\\", SW_SHOWNORMAL, false);

это тоже самое что и:

result = File.Run(_SystemFolder.."\\cmd.exe", "/C sleep 2", _SystemFolder.."\\", SW_SHOWNORMAL, false);

и:

Application.Sleep(2000);


Цитата:
local tFiles = File.Find(_SourceFolder.."\\Folder\\", "*.txt", true, false, nil, nil);
Я идиот, и мне стыдно, спасибо, и простите за тупость.
Автор: Octanium
Дата сообщения: 30.08.2015 23:40
Всем привет.

Столкнулся с проблемой, есть элементарная задача (на первый взгляд)

Нужно получить список папок, с под папками
Воспользовался аналогом команды File.Find, командой Folder.Find, и тут проблема Folder.Find сокращает путь =(, сократить путь или урезать его я и так могу лол.

Может кто-то сталкивался с такой проблемой? Что можно сделать? (нужно просто получить список с папками и под папками, записать в файл или в таблицу, без разницы)

спасибо!
Автор: KerberX
Дата сообщения: 30.08.2015 23:42

Цитата:
Folder.Find сокращает путь

Что значит сокращает путь?
Автор: Octanium
Дата сообщения: 30.08.2015 23:45
Делает вот так

C:\Users\dedi-\AppData\Local\Temp\...\bin
Автор: KerberX
Дата сообщения: 31.08.2015 00:14
Octanium
Folder.Find() так не делает. Проверь в своём коде наличие функции String.AbbreviateFilePath(). Именно она ответственна за сокращение пути.
Автор: Octanium
Дата сообщения: 31.08.2015 00:23
Сначала тоже так подумал, поменял все переменные.

Калбек функция

function FindFoldersToPerm(gFoundFolderPath)
StringCDELFolder = gFoundFolderPath
FindInStringPPER = String.Find(StringCDELFolder, "...", 1, false);
if ""..FindInStringPPER.."" == "" then
short_dirFolder = String.Replace(StringCDELFolder, ""..temp_dir.."\\add_files\\", "", false);
else
StringCDELFolderLength = String.Length(StringCDELFolder);
mDelRight = FindInStringPPER + 3;
DelRight = StringCDELFolderLength - mDelRight;
short_dirFolder = String.Right(StringCDELFolder, DelRight);
end
TextFile.WriteFromString(""..temp_dir.."\\FindFilesListPerm.txt", ""..short_dirFolder.."\r\n", true);
if (StatusDlg.IsCancelled()) then
return false;
else
return true;
end
end

То что до не было, String.AbbreviateFilePath()


function FindFileToPerm(gFoundPath)
StringCDEL = gFoundPath
short_dir = String.Replace(StringCDEL, ""..temp_dir.."\\add_files\\", "", false);
wshort_dir = String.AbbreviateFilePath(""..short_dir.."", 60);
TextFile.WriteFromString(""..temp_dir.."\\FindFilesListPerm.txt", ""..short_dir.."\r\n", true);
if (StatusDlg.IsCancelled()) then
return false;
else
return true;
end
end


Добавлено:
С файлами все ок, а вот с папками не завелась.
Автор: KerberX
Дата сообщения: 31.08.2015 01:02
Условие
if ""..FindInStringPPER.."" == "" then
...

Никогда не выполнится потому что String.Find() возвращает число и оно не приводится к пустой строке.

В остальном я не могу понять что делают эти функции. В любом случае функции File.Find() и Folder.Find() возвращают таблицу полных путей до файлов и папок.

Например.
local tFolders = Folder.Find(_SourceFolder, "*");
if tFolders ~= nil then
for x, y in pairs(tFolders) do
--[[
y - полный путь до папки.
--]]
end
end
Автор: Octanium
Дата сообщения: 31.08.2015 02:19
KerberX, да, пришлось обойтись без функций, даже без команды Folder.Find().


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

Спасибо за ответ.
Автор: Pus21
Дата сообщения: 31.08.2015 13:55
Здравствуйте.

Уже как-то писал, вскользь, о данной проблеме "Autoplay Media Studio", но она мене мешает всё больше и больше.

"Autoplay Media Studio" игнорирует (у меня по крайней мере) всё, что больше 1GB.

Если пытаешься:
распаковать архив 7-zip более 1GB при помощи "is7z.dll" (я сначала думал проблема в нём, оказалось не в нём);
распаковать архив zip более 1GB, командой "Zip.Extract";
и даже если задаёшь параметры установочному файлу более 1GB (к примеру NSIS),

"Autoplay Media Studio" просто пропускает строчку скрипта, как будто её вообще нет.

Если кто нибудь сталкивался с подобной проблемой, и решил её, пожалуйста отпишитесь - как?

Использую версию 8.3.0.0.
Пробовал версию 8.5.0.0, ситуация не изменилась.
Автор: AntiWinLockerLive
Дата сообщения: 31.08.2015 15:49
ну, не знаю, таких проблем не замечал, распаковывал архивы и 8 гб
Автор: Pus21
Дата сообщения: 31.08.2015 16:45

Цитата:
ну, не знаю, таких проблем не замечал, распаковывал архивы и 8 гб

Именно скриптами "Autoplay Media Studio" или через 7z.exe, arc.exe и прочие? Потому что если использовать их, то да, все нормально.
Автор: AntiWinLockerLive
Дата сообщения: 31.08.2015 16:47
7z.exe ...
Автор: qqwwrr
Дата сообщения: 02.09.2015 04:36
Всем привет! Столкнулся с непонятным глюком!


Проект виснет намертво, если нажать на Предпросмотр. Доходит до надписи Collections Fonts и всё. Вся эта хрень происходит из-за рич объекта в диалоге с этим текстом. Удаляешь его, и всё нормально.

В чём прикол, понять не могу. С любым другим текстом, всё нормально. Это ярый пи*дец какой-то...

Вот файл проекта http://rghost.ru/74WBxwrYg


Самое странное, что даже если ты в этом тексте оставишь хоть один символ, всё будет виснуть всё равно.
Помогает только удаление рич-объекта
Автор: AntiWinLockerLive
Дата сообщения: 02.09.2015 07:51
Так программа вам подсказывает...
Выберите в настройках объекта шрифт и все будет собираться.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980

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


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