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

» Autoplay Media Studio

Автор: Robby
Дата сообщения: 06.09.2010 10:52
мы знаем что расширение это последние 4 или 3 символа после точки. Получаем список всех используемых расширений. Выделяем имя файла сравниваем последние 5 символов со списком расширений, если не совпадает сравниваем 4 последних символа. Если снова не совпадает это и есть имя файла, если совпадет 4 или 5 последних символов то от имени отрезаем расширение.
так вроде должно сработать но громоздко. Может есть еще какие идеи?
Автор: tavria2
Дата сообщения: 06.09.2010 11:13
Robby
Это, если файл имеет одно расширение, а ты говорил, что файл может иметь несколько расширений или я не так понял?
Автор: Robby
Дата сообщения: 06.09.2010 11:32
tavria2
файл может иметь как одно так и два расширения. Вроде решение найдено

Код:
sName = string.gsub (sName, "%.%a*%a*$", "");
Автор: tavria2
Дата сообщения: 06.09.2010 11:44
Robby
Вариант с перечислением расширений.
Для AMS8:
Код: sName="a.bbb.ext.ext";
t = {ext="", rar="", zip=""}; -- все возможные расширения
sText = string.gsub(sName, "%.(%w+)", t);
Автор: Robby
Дата сообщения: 06.09.2010 12:24

Цитата:
"a.b.c.zip.rar" - твой код выдаст "a.b.c.zip", а должен "a.b.c"

да выдаст, я просто привел не весь код а такая последовательность выводит все правильно потому, что в имени уже нет одного расширения

Код:
for a,file_path in tblFiles do
sFile = String.SplitPath(file_path).Filename..String.SplitPath(file_path).Extension;
sName = String.SplitPath(file_path).Filename;
sName = string.gsub (sName, "%.%w*$", "");
TextFile.WriteFromString("C:\\tеst.txt", sFile.." >> "..sName.."\r\n", true); -- проверка результатов
end
Автор: tavria2
Дата сообщения: 06.09.2010 16:40
Robby

Цитата:
тоже дает ошибки
пример:
7129.01.rar>>7129

У меня результат: 7129.01

Цитата:
sText = string.gsub(sName, "%.(%w+)", function (v) return t[v] end); <- не могу въехать как это работает

(%w+) - алфавитно-цифровое выражение после точки, которое будет передано в функцию и в последствии заменено результатом функции.
В функции делается попытка веруть значение индекса таблицы. В качестве индекса таблицы выступает параметр переданный в функцию, т.е. (%w+).

Добавлено:

Цитата:
У меня результат: 7129.01

Мда, в AMS7: 7129, а в AMS8: 7129.01

Добавлено:
Попробуй следующее:
Код: sName="a.bbb.ext.ext";
t = {ext="", rar="", zip=""}; -- все возможные расширения
sText = string.gsub(sName, "%.(%w+)", function (v) if t[v] then v="" else v="."..v end return v end);
Автор: lorents
Дата сообщения: 06.09.2010 21:01
Добрый вечер!
Хочу сделать GUI версии, для одной программы (программа работает через командную строку) и сейчас пытаюсь понять, как можно остановить процесс работы данной программы через AMS, убивать процесс мне не хочется. Мне посоветовали попробовать отослать окну консоли сообщение WM_CLOSE, как я понимаю это средства Win API. Но у меня не выходит, есть идеи как это сделать?
Автор: Robby
Дата сообщения: 06.09.2010 21:03
tavria2
какая-то мистика, если я указываю таблицу так:
tbExt = {djvu="",rar="",txt="",zip=""};
то все вроде правильно работает, а если данные беруться из таблицы в которую расширения добавлялись автоматически из существующих файлов - то ничего не работает. Предыдущий код работал с этой таблице. Ну тут можно как-то это пережить прописав все расширения, но еще появиласть трудность. Как вписать 7z="". Прога ругается первая идет цифра, что не допустимо.
Автор: tavria2
Дата сообщения: 06.09.2010 21:28
Robby

Цитата:
а если данные беруться из таблицы в которую расширения добавлялись автоматически из существующих файлов - то ничего не работает.

Скорее всего, не правильно заполняешь таблицу. Синтаксис примерно такой:

Код: tbExt = {};
tbExt["7z"] = "";
tbExt["djvu"] = "";
tbExt["rar"] = "";
-- и т.д.
Автор: lorents
Дата сообщения: 06.09.2010 22:07
tavria2
Забыл указать, программа будет запущена в скрытом режиме.
Имеешь ввиду через Window.EnumerateProcesses?
Меня вот смущает одно, через Window.EnumerateProcesses я получу список запущенных процессов, а как мне узнать это мой процесс или нет, выходит только через имя?
Автор: Robby
Дата сообщения: 06.09.2010 23:29
tavria2
Все заработало, большое спасибо.
Автор: tavria2
Дата сообщения: 07.09.2010 08:54
lorents
Чесно говоря я не знаю чем тебе помочь. Консольные окна очень специфичны, они не имеют доступа к потоку сообщений окон и как ими управлять - понятия не имею.
На счет "узнать это мой процесс или нет" - мало, что дает, т.к. в одном процессе может быть несколько консольных окон с одинаковыми именами.
Автор: lorents
Дата сообщения: 07.09.2010 09:44
tavria2
Если что придумаешь, дай знать

Добавлено:
tavria2
а если это будет не exe, а dll, тогда управлять должно быть легче?
Автор: tavria2
Дата сообщения: 07.09.2010 11:05
lorents

Цитата:
а если это будет не exe, а dll, тогда управлять должно быть легче?

Что "это"? Функции или просто вызов консоли из dll? Если второе, то ситуация не изменится.
Автор: lorents
Дата сообщения: 07.09.2010 13:09
tavria2
функции. думаю тогда может все и получиться. ведь работу dll на много легче остановить.

Добавлено:
tavria2
а как можно отключить bat-файл? Ты не знаешь, как это делать?
Автор: tavria2
Дата сообщения: 07.09.2010 14:43
lorents

Цитата:
а как можно отключить bat-файл? Ты не знаешь, как это делать?

Убить процесс
Закрыть окно
API для консоли
В двух последних случаях нужен дескриптор консольного окна.
Автор: Sanchos145
Дата сообщения: 07.09.2010 15:40
Подскажите почему не работает Application.SetFullScreen(); ?
Автор: tavria2
Дата сообщения: 07.09.2010 16:40
Sanchos145
Потому, что выдуманное действие не обязано работать, такого действия - не существует.
См. справку по действию: Window.Maximize.
Автор: Sanchos145
Дата сообщения: 07.09.2010 16:52
Window.Maximize. Работает следующим образом, у меня проект 1024-768, когда запускаю его при разрешении екрана 1600-1200 и задействую Window.Maximize. то проект не расширяется а переезжает с центра экрана в левый верхний угол.

Добавлено:
SetFont = function (strObjectName, strFontName, nFontSize, nFontColor)

strFontName = strFontName or "Tahoma"

nFontSize = nFontSize or 9

nFontColor = strFontColor or Math.HexColorToNumber("FFFFFF");

Paragraph.SetProperties(strObjectName, {FontName = strFontName,

FontSize = nFontSize,

ColorNormal = nFontColor,

ColorHighlight = nFontColor,

ColorDown = nFontColor});

local nError = Application.GetLastError();

return (nError == 0), _tblErrorMessages[nError];

end



ok, msg = SetFont("Paragraph3", "Verdana", 12, Math.HexColorToNumber("c0c0c0"));

if not ok then -- если есть ошибки

Dialog.Message("Error", msg, MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);

end



У меня чтото не получается, можно ли забодяжить отдельный код на изменение шрифта параграфа, отдельный на изменение цвета, в версии 7.5 без глобальных функций и без плагинов, все в одном окне "On click" ю

Добавлено:
SetFont = function (strObjectName, strFontName, nFontSize, nFontColor)

strFontName = strFontName or "Tahoma"

nFontSize = nFontSize or 9

nFontColor = strFontColor or Math.HexColorToNumber("FFFFFF");

Paragraph.SetProperties(strObjectName, {FontName = strFontName,

FontSize = nFontSize,

ColorNormal = nFontColor,

ColorHighlight = nFontColor,

ColorDown = nFontColor});

local nError = Application.GetLastError();

return (nError == 0), _tblErrorMessages[nError];

end



ok, msg = SetFont("Paragraph3", "Verdana", 12, Math.HexColorToNumber("c0c0c0"));

if not ok then -- если есть ошибки

Dialog.Message("Error", msg, MB_OK, MB_ICONEXCLAMATION, MB_DEFBUTTON1);

end



У меня чтото не получается, можно ли забодяжить отдельный код на изменение шрифта параграфа, отдельный на изменение цвета, в версии 7.5 без глобальных функций и без плагинов, все в одном окне "On click" ю
Автор: tavria2
Дата сообщения: 07.09.2010 17:50
Sanchos145

Цитата:
у меня проект 1024-768, когда запускаю его при разрешении екрана 1600-1200 и задействую Window.Maximize. то проект не расширяется а переезжает с центра экрана в левый верхний угол.

У меня тоже разрешение экрана 1600-1200 и все нормально разворачивает.
Проверял на AMS 7.5 и AMS 8.0 (WinXP).

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

Ты хочешь разделить вышеуказанную функцию на две, SetFont и SetColor?
Автор: lorents
Дата сообщения: 07.09.2010 18:39
tavria2
кое-что нашел, можно через функцию GenerateConsoleCtrlEvent можно закрыть консольные приложения, осталось найти дескриптор консольного окна? еще есть функция GetConsoleWindow, это не подходит?
Ты уж извини меня, что я к тебе обращаюсь как что.
Автор: tavria2
Дата сообщения: 07.09.2010 18:52
lorents
Мне не удалось получить дескриптор через GetConsoleWindow.
Автор: lorents
Дата сообщения: 07.09.2010 19:03
tavria2
а ты через Kernel32.dll делал? интересно почему не вышло, эта функция вроде для консолей
пойду копать дальше, а я думал, что уже все.
Автор: tavria2
Дата сообщения: 07.09.2010 19:14
lorents

Цитата:
а ты через Kernel32.dll делал?

Обижаешь
Автор: lorents
Дата сообщения: 07.09.2010 19:41
tavria2
прости, не хотел.
Может тогда спросить на оф. сайте? если можешь спроси, или если хочешь, дай код, я спрошу.


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

Автор: Sanchos145
Дата сообщения: 07.09.2010 20:06
Цитата:У меня чтото не получается, можно ли забодяжить отдельный код на изменение шрифта параграфа, отдельный на изменение цвета


Ты хочешь разделить вышеуказанную функцию на две, SetFont и SetColor?

Да
Автор: tavria2
Дата сообщения: 07.09.2010 21:25
lorents
Извини, я этим пока заниматься не буду, там не все так просто.

Sanchos145
Код: local function SetFont(sObjectName, sFontName, nFontSize)
tProp = Paragraph.GetProperties(sObjectName);
tProp.FontName = sFontName or "Tahoma";
tProp.FontSize = nFontSize or 9;
Paragraph.SetProperties(sObjectName, tProp);
end

local function SetColor(sObjectName, nFontColor)
tProp = Paragraph.GetProperties(sObjectName);
tProp.ColorNormal = nFontColor or Math.HexColorToNumber("FFFFFF");
tProp.ColorHighlight = nFontColor or Math.HexColorToNumber("FFFFFF");
tProp.ColorDown = nFontColor or Math.HexColorToNumber("FFFFFF");
Paragraph.SetProperties(sObjectName, tProp);
end

SetFont("Paragraph3", "Verdana", 12);
SetColor("Paragraph3", Math.HexColorToNumber("c0c0c0"));
Автор: lorents
Дата сообщения: 07.09.2010 21:33
tavria2
я понимаю, если найдется время и желание, посмотри пожалуйста.
я хочу сделать специальную программу по оптимизации картинок.
Автор: tRippinthehead
Дата сообщения: 08.09.2010 08:11
Кто может помоч прикрутить dllку к AMS 8? )
Автор: Sanchos145
Дата сообщения: 08.09.2010 09:29
Наконец то заробоатло ! Безгранично тебе благодарен .

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140

Предыдущая тема: Media Player Classic - Home Cinema (MPC-HC)


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