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

» Autoplay Media Studio

Автор: Zloy_Gelud
Дата сообщения: 01.11.2008 18:12
lorents


Код: --*** Типа переменные ----------------
local strPDFPath_1 = "";
local strPDFPath_2 = "";
-- выходной файл будет создан во временной папке Windows
local strOutFilePath = _TempFolder.."\\split.pdf";
--*** Путь к первому файлу ----------------
local nSelected_1 = ComboBox.GetSelected("ComboBox1");
if (nSelected_1 ~= -1) then
    strPDFPath_1 = ComboBox.GetItemData("ComboBox1", nSelected_1);
end
--*** Путь ко второму файлу ----------------
local nSelected_2 = ComboBox.GetSelected("ComboBox2");
if (nSelected_2 ~= -1) then
    strPDFPath_2 = ComboBox.GetItemData("ComboBox2", nSelected_2);
end
--*** Объединяем два .PDF файла в один ----------------
if (strPDFPath_1 ~= "") and (strPDFPath_2 ~= "") then
    local strArg = "-mer -i \""..strPDFPath_1.."\" -i \""..strPDFPath_2.."\" -o \""..strOutFilePath.."\"";
    File.Run("AutoPlay\\Docs\\pdfspme_cmd.exe", strArg, "", SW_MINIMIZE, false);
end
Автор: lorents
Дата сообщения: 01.11.2008 18:24
Zloy_Gelud
СПАСИБО! работает и все понятно как
если кому надо то программа откуда я взял pdfspme_cmd.exe называется PDF Split Merge

Добавлено:
и еще как сделать чтобы pdfspme_cmd.exeКак запустить не был виден для пользователя?
Автор: lorents
Дата сообщения: 01.11.2008 20:25
Zloy_Gelud
мы же должны указать путь к pdf-файлам, а где у тебя это указывается,
простите чё-то сегодня туплю

Добавлено:
ой блин ты же мне сделал через ComboBox а мне надо было через CheckBox
мне надо просто поменять слова ComboBox на CheckBox правильно?
че-то сегодня я реально торможу
Автор: Zloy_Gelud
Дата сообщения: 02.11.2008 00:34
lorents [Исправлено]

Мне чёт показалось, что тебе надо было с Комбобоксами .
Ну, а если с Чекбоксами, то возможно так сойдет:
Создай 3 объекта CheckBox (для примера) с именами CheckBox1, CheckBox2, CheckBox3, но с пустым текстом.
On Preload страницы:

Код:
function KillProcessTree(strProcessHost)
    for nPID, strFilePath in (System.EnumerateProcesses()) do
    if (String.Lower(String.SplitPath(strFilePath).Filename..String.SplitPath(strFilePath).Extension) == strProcessHost) then
    System.TerminateProcess(nPID);
     end
    end
end

-- таблица .PDF файлов
-- таблицу можно формировать динамически, сканируя опред. папку с .PDF файлами

tblPDFFiles = {'C:\\PDF\\1.pdf', 'C:\\PDF\\2.pdf', 'C:\\PDF\\3.pdf'};        
--*** заполняем имена чекбоксов именами .PDF файлов
for n, strPDFPath in tblPDFFiles do
    CheckBox.SetProperties("CheckBox"..n, {Text = String.SplitPath(strPDFPath).Filename..String.SplitPath(strPDFPath).Extension});
end
Автор: lorents
Дата сообщения: 02.11.2008 10:13
Zloy_Gelud
БОЛЬШОЕ ПРЕБОЛЬШОЕ СПАСИБО!

Цитата:
SW_HIDE

помогло

Цитата:
З.Ы. И ещё, неплохо бы после выполнеия склеивания .PDF файлов, закрыть и саму программу (PDF Split Merge). Немного подправил код.

это проблематично сделать, т.к. она запускается менее чем на секунду, и она к тому же сама выключается, но вот за саму функцию KillProcessTree спасибо, буду знать теперь

и последний вопрос
заметил такую проблему что код работает один раз, как сделать чтобы он удалял при повторном выборе старый split.pdf

пробовал через

Код: File.Delete(_TempFolder.."\\split.pdf", false, false, false, nil);
Автор: KurtWagner
Дата сообщения: 02.11.2008 10:33
Zloy_Gelud ну а скажем my.program.exe как закрыть?
Автор: lorents
Дата сообщения: 02.11.2008 10:45
чуть не забыл
а если я буду использовать название файлов русские то будет ли работать тогда?
Автор: Zloy_Gelud
Дата сообщения: 02.11.2008 14:31
lorents


Цитата:
как сделать чтобы он удалял при повторном выборе старый split.pdf


Цитата:
думаю из-за того чтоб созданный split.pdf загружается в web1

Именно поетотому. Удалить будет невозможно, пока не выгрузишь из Веба.
Можно создавать новый split.pdf, например дописывая к имени цифрой индекс (1, 2, 3). А после закрытия проекта удалять эти файлы.

Цитата:
и еще как сделать что если не нажат ни один из CheckBox то кнопка не видима

Сделай первоночально кнопку невидимой, а при выборе какого-нить ЧекБокса делай ее видимой.

Цитата:
а если я буду использовать название файлов русские то будет ли работать тогда?

Всегда можно попробывать . Ну а по идее с кириллицей должно работать.


KurtWagner -- а KillProcessTree не помогает??
Автор: lorents
Дата сообщения: 02.11.2008 15:18
Zloy_Gelud

Цитата:
Именно поетотому. Удалить будет невозможно, пока не выгрузишь из Веба.

а как это сделать, пробовал просто загружать другую страницу, но не вышло, т.е. в коде для кнопки написал загрузка определённого файла и удаление split.pdf

Цитата:
Можно создавать новый split.pdf, например дописывая к имени цифрой индекс (1, 2, 3). А после закрытия проекта удалять эти файлы.

можно поподробнее

Цитата:
Сделай первоночально кнопку невидимой, а при выборе какого-нить ЧекБокса делай ее видимой.

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

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

если заработает скажу

Добавлено:
сейчас столкнулся с такой проблемой не могу установить ни один объект поверх плагина, есть идеи от чего это может быть?
Автор: Zloy_Gelud
Дата сообщения: 02.11.2008 16:33
lorents


Цитата:
пробовал просто загружать другую страницу, но не вышло, т.е. в коде для кнопки написал загрузка определённого файла и удаление split.pdf

Не знаю как у тебя.. но я загрузил в Веб другой .PDF файл, а предыдущий преспокойно удалился.

Цитата:
можно поподробнее

Можно Немного полёта фантазии добавил..
Глобальные функции:

Код: --[[ Создание рандомного имени из nChar символов ]]
function CreateRandomName(nChar)
    strReturn = "";
    if (nChar == "") or (nChar == nil) then
        nChar = 5;
    end
    -----------------------------------------------------------
    local tblLatin = {'a', 'b', 'c', 'd', 'e', 'f', 'g',
                        'h', 'i', 'j', 'k', 'l', 'm', 'n',
                        'o', 'p', 'q', 'r', 's', 't', 'u',
                        'v', 'w', 'x', 'y', 'z'};
    -----------------------------------------------------------
    for n = 1, nChar do
        nRandom = Math.Random(1, Table.Count(tblLatin));
        strReturn = strReturn..tblLatin[nRandom];
    end
    return strReturn;
end

--[[ Установка активности кнопки]]
function SetButtonEnable()
    local bEnable = false;
    -- 3 - кол-во CheckBox'ов на странице
    for n = 1, 3 do
        if (CheckBox.GetChecked("CheckBox"..n)) then
            bEnable = true;
            break
        end
    end
    if (bEnable) then
        Button.SetEnabled("Button1", true);
    else
        Button.SetEnabled("Button1", false);
    end
end
Автор: lorents
Дата сообщения: 02.11.2008 17:51
Zloy_Gelud

Цитата:
--[[ Установка активности кнопки]]

я не совсем понял для чего этот код в глобальных функциях
если можешь объясни, просто на сколько я понял код для активности кнопки на странице

Цитата:
On Click каждого CheckBox'a:

я думал что надо типа сделать проверку если нажат какой нибудь ЧекБокс то кнопка активна
я ты просто предложил самый простой но самый эффективный способ, как говорится все гениальное просто

Цитата:
Какой объект? Какой плагин?

в моем случаи плагин объект Label, ну как не выходит положить Label поверх WinButton, то же самое касается всех других плагинов и объктов

да самое главное код не работает
проверил папки с названием SPME_Temp не создаётся

P.S.:
Цитата:
Сегодня я добрый

может у тебя есть код копирования файла с использованием прогресс бара и кнопки отменя копирования

Шучу я сам разберусь,, но если ты мне скинешь эти два кода, я не буду возражать
Автор: Zloy_Gelud
Дата сообщения: 02.11.2008 18:14

Цитата:
Шучу я сам разберусь,, но если ты мне скинешь эти два кода, я не буду возражать

Минут 5 ржал под столом.. lol

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

Я вообще ничего не понял..
Фукция SetButtonEnable() написана в Гл. функциях, чтоб ее можно было вызывать, так сказать, из любого места в проекте.
А, если ты имел ввиду именно

Цитата:
--[[ Установка активности кнопки]]

то это не код, а всего лишь типа описание фукции.

Цитата:
я думал что надо типа сделать проверку если нажат какой нибудь ЧекБокс то кнопка активна

Кхм..это и реализовано в функции SetButtonEnable().

Цитата:
в моем случаи плагин объект Label, ну как не выходит положить Label поверх WinButton, то же самое касается всех других плагинов и объктов

Ну этот плагин имеет свойство неперекрываемости, как и некоторые другие объекты.

Цитата:
да самое главное код не работает
проверил папки с названием SPME_Temp не создаётся

Точно. Немного был невнимателен. Сделай так:

Код: if (not Folder.DoesExist(_TempFolder.."\\SPME_Temp")) then
    Folder.Create(_TempFolder.."\\SPME_Temp");
end
-- путь к выходному файлу
local strOutFilePath = _TempFolder.."\\SPME_Temp\\"..CreateRandomName(6)..".pdf";
-- Дальше без изменений
Автор: lorents
Дата сообщения: 02.11.2008 18:39
Zloy_Gelud

Цитата:
Фукция SetButtonEnable() написана в Гл. функциях, чтоб ее можно было вызывать, так сказать, из любого места в проекте.


Цитата:
Кхм..это и реализовано в функции SetButtonEnable().

прости перепутал, изменяюсь

столкнулся с такой проблемой невозможно загрузить созданный объект из-за не определённости названия файла
Автор: Zloy_Gelud
Дата сообщения: 02.11.2008 18:44
lorents


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

С объектом "Progress" что-то не предумалось как прервать копирование, но, если устроит с использованием StatusDlg, то так можно:

Код: function Callback(strSource, strDestination, nCopied, nTotal, nFileCopied, nFileTotal)    
    nPercent = Math.Round(nCopied / nTotal * 100, 0);
    StatusDlg.SetMeterRange(0, 100);
    StatusDlg.SetTitle("");
    StatusDlg.SetMessage("Копирование");
    StatusDlg.SetStatusText(strDestination);
    StatusDlg.SetMeterPos(nPercent);
    StatusDlg.ShowCancelButton(true, "Cancel");
    if (StatusDlg.IsCancelled()) then
        return false; else return true
    end    
end

StatusDlg.Show(MB_ICONNONE, false);
File.Copy("C:\\Best_Fonts\\*.*", "C:\\1\\", true, true, false, true, Callback);
StatusDlg.Hide();
Автор: lorents
Дата сообщения: 02.11.2008 19:12
Zloy_Gelud

Цитата:
Ну и для загрузки .PDF файла используй переменную strOutFilePath.

не выходит


Цитата:
С объектом "Progress" что-то не предумалось как прервать копирование, но, если устроит с использованием StatusDlg, то так можно:

жаль, ну ладно с этим
Автор: Zloy_Gelud
Дата сообщения: 02.11.2008 19:20
lorents

Выложи свой проект куда-нить или напиши какой у тебя код в кнопках стоит (в частности код кнопки загрузки в Веб объект).
Автор: lorents
Дата сообщения: 02.11.2008 19:34
Zloy_Gelud
держи
http://webfile.ru/2356402
если что не так скажи

Автор: Zloy_Gelud
Дата сообщения: 02.11.2008 19:42
lorents -- что-то он много у тебя весит. Наверняка можно лишнее выкинуть, типа самих .PDF файлов. А то в данный момент на жопарезе сижу..
Автор: lorents
Дата сообщения: 02.11.2008 19:58
Zloy_Gelud
http://webfile.ru/2356474
здесь только про создания pdf
Автор: Zloy_Gelud
Дата сообщения: 02.11.2008 20:05
lorents
Стесняюсь спросить. Ты в On Preload вот в этой строчке:

Цитата:
tblPDFFiles = {'C:\\PDF\\1.pdf', 'C:\\PDF\\2.pdf', 'C:\\PDF\\3.pdf'};

поменял на реальные пути к своим .PDF файлам?
Автор: lorents
Дата сообщения: 02.11.2008 20:12
Zloy_Gelud

Цитата:
Стесняюсь спросить. Ты в On Preload вот в этой строчке


нет конечно, я просто создал папку и файлы как ты в коде прописал, код создает pdf-файл но не загружает в web

Добавлено:
Zloy_Gelud
до меня дошло в чем дело
проект пытается загрузить не существующий файл
для этого следующем коде должны поставить ожидание работы pdfspme_cmd.exe

Код: Shell.Execute("AutoPlay\\Docs\\pdfspme_cmd.exe", "open", strArg, "", SW_HIDE, true);
Автор: KurtWagner
Дата сообщения: 03.11.2008 05:24
Zloy_Gelud а KillProcessTree не помогает?? А как это, я в аутокаде тольк стартую
Автор: Zloy_Gelud
Дата сообщения: 03.11.2008 15:19
KurtWagner -- потрудись пожалста дать нормальное описание проблемы бо я нечего не понял.
Автор: lorents
Дата сообщения: 03.11.2008 23:32
если вдруг кому надо вот код копирования с использованием прогресс бар

Код: function Copy_CB(Source,Destination,Copied,Total)
    local npgress = ((Copied/Total) * 100);
    Progress.SetCurrentPos("Progress1", npgress);
return true;
end

--initiate progress bar
Progress.SetCurrentPos("Progress1", 0);
Progress.SetText("Progress1", "");
Progress.SetEnabled("Progress1", true);
Progress.SetVisible("Progress1", true);
if not Folder.DoesExist(_TempFolder.."\\MyTestDestDir") then
    Folder.Create(_TempFolder.."\\MyTestDestDir"); --if destination folder does not exist, create it
end
File.Copy("C:\\MyDir\\myfile.ext", _TempFolder.."\\MyTestDestDir\\", false, true, true, true, Copy_CB); --call the function Copy_CB to display progress
--Progress.SetEnabled("Progress1", false);
Progress.SetVisible("Progress1", false);
Progress.SetCurrentPos("Progress1", 0);
Progress.SetText("Progress1", "");
Автор: Zloy_Gelud
Дата сообщения: 03.11.2008 23:44
lorents

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

Ты бы лучше привел код с Прогресс Баром с возможностью отмены копирования.
Автор: lorents
Дата сообщения: 03.11.2008 23:57

Цитата:
Ты бы лучше привел код с Прогресс Баром с возможностью отмены копирования.

как найду напишу
Автор: Zloy_Gelud
Дата сообщения: 04.11.2008 00:56
lorents

Ну кажется что-то предумал :
On Click кнопки копирования:

Код: -- флаг прерывания копирования
bStop = false;
-- путь к папке, в к-ую будет скопирован файл
strDestDir = "C:\\DestDir";
--*** Callback функция копирования
function Callback(strSource, strDestination, nCopied, nTotal)
    local nPercent = Math.Round(nCopied / nTotal * 100, 0);
    Progress.SetText("Progress1", Math.Round(nPercent, 0).."%");
    Progress.SetCurrentPos("Progress1", nPercent);
    -- еесли нажали кнопку отмены
    if (bStop) then
        -- прерываем копирование
        return false;
    else    -- если не нажимали
        -- продолжаем коирование
        return true;
    end
end
--*** Если папка отсутствует, тогда создаем ее
if (not Folder.DoesExist(strDestDir)) then
Folder.Create(strDestDir);
end
-- копируем файл
File.Copy("C:\\File.exe", strDestDir.."\\", false, true, true, true, Callback);
Автор: lorents
Дата сообщения: 04.11.2008 09:30
Zloy_Gelud
работает! сейчас переделаю код под себя
и еще надо сделать чтобы проект удалял часть скопированного файла, ну это уже пустяк
спасибо
Автор: alfonser
Дата сообщения: 05.11.2008 13:50
Подскажите, пожалуйста:
(Это был совет от GOOSE)
Требуется:
1- переписать авторан во временную папку на HDD при вставке CD1
2- запуститься с HDD
3- после установки прибить установочный авторан на HDD
Автор: Zloy_Gelud
Дата сообщения: 05.11.2008 14:02
alfonser -- а саму проблему не напишешь? Чтобы знать, на что отвечал GOOSE.

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768

Предыдущая тема: Symantec Endpoint Protection - SEP


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