![]() |
вызов PDF
здравствуйте...такой вопрос...есть презентация на флеше... и есть куча pdf файлов(штук 70), которые по ТЗ должны загружаться в Reader'e...натолкните на мысль, как это реализовать и про что хэлп читать... кучу bat' ников делать - не тема! :umnik2:
|
Чего-то готовых решений не приходит на ум. Разве что пресловутый Zinc. Но за деньги.
Бесплатно: пишите простенький ехе-запускашку, который держит связь с флеш-прожектором, слушает чего запускать по LocalConnection (вполне реально, испробовано), или через ClipBoard (это я не пробовал). Можно еще сокет использовать для отдачи команд запускашке, но это перебор наверно. Не очень оригинально, к сожалению. Но куча батников тоже не блеск. |
Идею принял. Спасибо..попробую разобраться...может быть еще варианты есть?
|
тут где-то на форуме выкладывали аналог батников - хитрую exe-запускашку, которая всего-то должна иметь тоже имя, что и запускаемый файл.
|
http://flasher.ru/forum/showthread.php?t=114844
Вот, например, только в варианте с инишником. Для 70 пдфов придется делать 70 копий такой ехе-запускашки. Не катит. |
всеравно спасибо, перерыв кучу всего, так и не нашел иного способа...ну чтож, наберусь терпения и приготовлю кучу ini'шек...
|
Если вы наберетесь терпения, к вечеру я постараюсь выложить запускашку, о которой я говорил, использующую LocalConnection.
|
Вложений: 1
Ну вот, готово.
Итак, во вложении находится пример, демонстрирующий, как из флэш-прожектора можно открывать любые файлы - .exe, .doc, .pdf, txt и т.д. в неограниченных количествах :). Принцип работы вкратце: в прожекторе создается экземпляр LocalConnection с определенными параметрами (их менять нельзя): Код:
var client:LocalConnection = new LocalConnection();flrun.exe "подхватывает" локалконнекшн в памяти, слушая его, принимает строку-команду из прожектора. И отдает ее как есть API-функции ShellExecuteA(). (тут-то и возникла извечная проблема кодировок.))) но поиск как всегда рулит.) flrun.exe спроектирован так, что запускается в единственном экземпляре и только из-под прожектора при условии, что уже создан экземпляр LocalConnection. Закрывается flrun.exe вместе с прожектором автоматически. Было бы интересно услышать мнения, замечания, пожелания, предложения. |
У меня,чё-то не работает
|
можно попробывать так
у меня например работает getURL("name.pdf", "_blank"); открывается новое окно браузера и тама загружается пдф фаил....прям в браузере |
alexcon314, у меня тоже не работает((((
|
Вложений: 1
Досадно.)
Ну что, будем дебажить? Или не стоит того? Во вложениеи lctrace.exe - консольный вариант flrun.exe. Кому не лень, замените flrun.exe на lctrace.exe (переименовать или заменить в прожекторе fscommand("exec", "lctrace.exe")) в моем примере. И отпишитесь что видно )). |
что-то с LocalConnection не работет....домой приду, посмотрю поподробнее...
|
alexcon314, с абсолютными путями все ок, а вот с относительными не пашет..(
|
Может я какую-то деталь упустил в описании как юзать.. у меня все пашет.
Что видно в трейсе (lctrace.exe)? Приведите пример строки-команды, плз, того, что пишете в прожекторе в текст инпут. |
Во, эта пашет! Только трейсер теперь аккуратно из нее убери пожалуйста))))
А так просто супер, за такое на родине памятник ставят))) А, и еще баг-не баг, но портабельный офис запускается, но открыть файл не может, ошибку пути выдаёт. Впрочем это уже его проблемы)))) Спасибо большое, только доделай до релиза плиз)))) |
Вложений: 1
Удалил.
... опа.. с точками не понял. подробней можно? Честно, меня больше русские буквы в путях напрягли.. |
А, нет, сорри, чето я затупил! Все правильно, это косые меня сбили.
Еще раз СПАСИБО! Всё работает. Lukichev, относительный путь примерно так Код:
client.send("toExe", "run", "..\\PDFfiles\\file.pdf"); |
Уточняю, относительный путь берется ОТНОСИТЕЛЬНО ЗАПУСКАШКИ (flrun.exe).
|
Здорово! спасибо за такой подарок :)
Работает замечательно. Единственное, при старте, секунд 5 курсор сиволизирует занятость системы. ps в сообщении с примером использования опечатка при указании адреса "на уровень выше" - вместо двух точек стоит одна. |
Ок. Спасибо всем.
Релиз постараюсь сделать в ближайшее время.)) Цитата:
Если есть пожелания в плане функционала - милости просим.)) Пока, за отправную точку, возьмем что есть. |
а что будет, теоретически, если запустить два или более проектора (у каждого своя запускашка)?
Мне казалось будут баги из-за идентификаций проекторов, но вроде всё работает нормально. |
Запускашка одна на все запущенные прожекторы (вторая просто не запустится). И она будет работать пока не закроют последний прожектор (точнее, пока не будет убит последний LocalConnection среди прожекторов). Это своего рода "сервер". Она принимает "запросы"-команды и выполняет их. Идентификации как таковой нет, точнее она одинакова для всех - это имя соединения и имя метода в LocalConnection. Запускал до десятка прожекторов - работало, но, конечно, можно попытаться сэмулировать ситуацию, когда один запрос затрет другой, необработанный еще..Они же пишутся в одну область памяти. При скане памяти каждые 100мс это сделать можно, наверно, только программно. И потом, когда запускашка читает очередной запрос, ни один прожектор не может ничего послать, блокировка работает, и прожекторы соответственно одновременно посылать запросы не могут. Некая очередность организована.. Один пишет запрос, другой - ждет.
Вообще, можно все это и по другому разрулить, по примеру "клиент-сервер", сервер написать более продвинутый. Это, возможно, потребуется, когда не только прожектор будет слать "запросы" запускашке, но и от запускашки будут приходить в прожектор "ответы". Тогда без строгой идетификации не обойтись. Либо просто снабжать каждый прожектор своей запускашкой, снабженной индивидуальной конфигурашкой (:D) - файликом с именами соединения и метода клиента, с которым ей предстоит работать.. Пока не вижу причин все усложнять. |
понятно. Тогда единственное что стоит добавить это сообщение "фаил по такому-то пути не найден", когда файла действительно нет, а то сейчас он предательски молчит :)
|
Реализую. Мессаджбоксом.
|
Вложений: 1
Релиз.
|
Низкий поклон)))) Решить многолетнюю проблему флэшовых медиамейкеров - ты вошел в историю. Это надо расшарить - сделать страницу, или в блогах разместить. Людям это нужно. Ты молодчина!
|
Wolsh, cпасибо. Если успел качнуть - перекачай. Там маленькое исправление.
Когда неправильный путь - он в мессаджбокс выводится. Mnilionic предложил. Так всегда с релизами - чего-нибудь да забудешь)))). Провозился с Код:
Единственное, при старте, секунд 5 курсор символизирует занятость системы. |
Ага, только знаешь... давай это окошко с месседжем всеже очеловечим. Пусть там будет написано например File not found и во второй строчке - путь. А то, согласись, для конечного юзера окошко с кусками инопланетного кода)))) будет выглядеть пугающе. И заголовок окна катострофически не влазит. Почему бы не сделать просто Error. А вот что не стал пугающие значки вставлять в сообщение - это правильно)))
|
alexcon314, а у меня не пашет.
Распаковал на диск С,там же где и flrun.exe лежит положил txt и pdf файлы,не один не запускается,и вообще нет никакой реакци |
scarbo, без кода и раскладки вам как помочь? Покажите запросы и опишите кто где лежит.
|
alexcon314, оперативный релиз )
wolsh прав - заголовок окна пугающий :) На мой взгляд, было бы удобный выводить апсолютный путь файла. То есть реальный адрес по которому не удалось найти фаил. ещё страшная вещь: меседжбокс появляется !под! окном флеша. То есть если флеш в режиме фулскрин - фенита ля камедия, спасает альт+таб с поиском окна ошибки либо диспетчер задач. |
Кстати, это ведь кажется нерешаемая проблема - поверх фуллскрина (а каждая уважающая себя презентация обычно в фуллскрине))) уже ничего не покажешь, т.е. режим будет сброшен. Если при этом открывается нужный файл, еще ниче, а так... Может (правда не уверен) было бы интересно получать во флэшку сообщение что файл не нашли? И там уже стильно извиняться))))
Про абсолютный путь тоже ЗА. Только настаиваю на необходимости поясняющего ситуацию текста, а не просто пути. |
ну если предположить, что при желании открыть пдф нам не так уж нужен фулскрин уже - его можно принудительно сбрасывать перед запуском файла самочтоятельно.
В таком случае нужно только наладить, по возможности, чтоб диалог окно было над окном флеша. + ха, или чтоб flrun.exe запускала альтернативный error.exe с пояcнительным текстом, который благополучно откроется поверх фулскрина :D |
Странно,у меня ни чего не получалось на ноуте.
А на компе все прекрасно работает. Ни чё не понимаю,все тож самое делаю:boredom: |
Вот оно, началось :). Стоит только выйти "релизу" - сразу куча багов :D.
Каюсь, Wolsh меня так "разогрел", что бросился сломя голову шлепать версии как будто в первый раз. Ок. Работка предстоит серьезная. Давайте по порядку. 1. Отображение/обработка ошибок. МессаджБокс - в урну. Не по нашенски это, не по флешерски. Однако, заменой ему может быть только вариант отдачи ошибки (пусть и не обязательно "кривой путь") обратно в прожектор . Технически это не очень заморочно. Код в прожекторе изменится минимально - добавится метод у локалконнекшн и все. Типа: Код:
client.error = function(error_message){...}- налаживать идентификацию прожекторов, чтобы ОДИН экземпляр запускашки не слал мессаги наугад. Видимо, следует слать запускашке некий "ини-запрос", ответом на который будет id-инфа для клиента. Либо снабжать этой инфой каждый запрос изначально. Своего рода протокол нужен, вобщем. - делать под каждый прожектор свой экземпляр запускашки и конфигурять ее через ини-файл. Тогда только два (или несколько) идентичных прожектора смогут работать с одной и той же запускашкой и, возможно, некорректно получать сообщения от запускашки. Этот вариант более простой. Но появляется лишний файл - файл настроек. И для разработчиков лишняя морока. Да проблема вцелом не снимается, сужается только. Проблема в том, что такова особенность локал коннекшн: для обмена мессагами используется общий, так сказать, котел, читай область памяти с фиксированным адресом. Все месаги варятся там, пока не будут прочитаны (прочитанное сообщение не затирается как таковое, просто сбрасываются в ноль битовые поля, хранящие его размер), либо затерты вновь отосланным сообщением. Выцепить адресованное тебе сообщение из этого котла можно только по заголовку - пара имя коннекта/имя метода. И то - если успеешь. Сообщения не складываются "стопкой", которую можно последовательно неспеша разбирать. Скорее наоборот - жаждущие прочитать/отправить сообщение выстраиваются в очередь. И не факт, что корректно будут писаться/читаться сообщения при множестве клиентов. Впрочем, можно попробовать, но теоретически - не факт. Я все-таки думаю, если непрограммно, ручками, по нажатию кнопок-ссылок юзером каждый прожектор будет слать сообщения - то проблем может и не возникнет и без какой-либо идентификации. Невозможно представить, чтобы юзер метался от прожектора к прожектору и тыкал кнопки :). Ну то есть пока он доберется до кнопки в другом прожекторе, запускашка сто раз успеет прочитать последнее сообщение и двести раз отправить ответ на него. Но вот то что ответ это будет прочитан именно отправителем последнего сообщения - опять же не факт. Если программно слать, в цикле там или еще как - то вообще.. фиг его знает, хотя зачем пулять сообщения очередями в рамках презентации? Верно? Ну, вобщем небезнадежно . Вкратце примерно так. Какие будут варианты решения проблемы "нескольких прожекторов"? Очень интересно услышать ваши соображения. Не стесняйтесь :). Может быть эта проблема не особо актуальна? Хотя... проблема есть, полюбому ее как-то придется сгладить. Ну и остается вариант с МессаджБоксом-таки. Или с его разновидностью (запуск error.exe). Это уже не имеет к локалконнекшн отношения, ибо "обратки" в этом случае нет и все будет работать примерно так, как сейчас, если, конечно, проработать вопрос с правильным показом этого самого МесаджБокса.. Если не гуд только то что не поверх прожетора он вываливается - решить можно. 2. Проблема с ноутом scarbo. Обобщая - проблема переносимости. Тут треба подсобрать инфу. Но сразу скажу, что я программировал только под винду до XP Pro SP3 включительно. Оговорюсь, что в коде запускашки нет ничего "такого". Но тем не менее. Кстати, а не виста-ли у вас на ноуте, scarbo? Пожалуйста, дайте больше инфы о том как юзаются флэш-презентации, в каких режимах, как бы вы хотели чтобы было и т.д., вобщем, если вам действительно интересна эта попытка решить проблему запуска из под флэша разных сторонних программ - пишите. Все предусмотреть невозможно, конечно, видимо, стоит определить какие-то разумные требования. Лично я склоняюсь к варианту с МессаджБоксом. Ибо толком обработать ошибку прожектор все равно не сможет без дополнительных надстроек, а слать ему еррор только чтоб его потом показать - овчинка выделки, как говорится.. Ну чтобы не быть голословным, берусь предстваить оба варианта: с МессаджБоксом поверх и с "обраткой" без идентификации. Там посмотрим. Да, и про содержание МессаджБокса. Я так понял, даже если в исходнике прописан относительный путь к запускаемому файлу, в боксе треба отображать его проебразованным в абсолютный? |
если запускаются два прожектора использующие одину общую запускашку, то никаких броблем нету.
Проблема появляется, если вдруг кое-кто свистнет и пользователь запустит одновременно два (более?) !разных! прожектора, использующих разные запускашки и запускаемые файлы. То есть если я смотрю презентация с диска, то в фоне висит его запускашка. И при попытке запустить фаил с другой презентации, которая у меня на рабочем столе поиск запускаемого файла будет осуществлён относительно дисковой запускашки (как я понял они так устроены) три условия: одновременный просмотр двух !разных! прожекторов из !разных! директорий они оба должны использовать мега-метод "Запускашка" пути к файлам должны быть относительные первые два могут слачатся только у любопытных (причём у разработчиков) :) вариант с персональной запускашкой и ini файлом (например если вписывать туду идентификатор соединения) Его флеш читает, создаёт соединение, запускается запускашка, читает фаил, слушает нужное соединение. два камня: 1. все будут идентификатор оставлять дефолтный :) 2. нужно написать удобный интерфейс для юзания из флеша вариант, когда под !каждый запрос! запускается своя запускашка и после запуска нужного файла запускашка отрубается. один камень: удобный интерфес во флеше А месаджБокса... повер флеша его, раз говорите не вопрос, и готово :) |
О, много)))
Ну я, признаться, не понимаю, что за несколько прожекторов, зачем... Если такая ситуация и будет возникать в каком-то проекте, это всеже очень единичные случаи. Я даже представить сходу не могу такой проект, заливающий таскбар кнопками. По-моему это неактуально. Но если ктото поделится идеей такого проекта из двух и более прожекторов, одновременно запускающих файлы, прочту с большим интересом)))) По поводу бокса. Я бы сам пожалуй лучше во флэше ошибку обрабатывал, но зная уровень программирования дизайнеров (а они чаще всего и делают презентации, все на таймлайне или вообще скринами) немного за них побаиваюсь. Кроме того, их еще надо суметь убедить, что ошибка возможна))))))) Делать "лишние", на всякий случай, окна - в реальности мало кто будет. Так что в идеале было бы здорово сделать эту фичу опциональной. В идеале, вообще говоря, хорошо бы настройки всякие иметь, коль уж пошла такая послабуха, что можно всякие параметры передавать, а не тупо запускать ехе. Что бы хотелось навскидку? Задавать текст сообщения об ошибке - это позволит, в частности, использовать разные языки и разные литературные стили по желанию автора презентации (не смейтесь, не только же годовые отчеты нефтекомбината бывают, ктото и на албанском загнуть захочет). Потом - выбор способа обработки ошибки - во флэше или боксом. Чтобы бедный дизайнер мог поставить параметр в "auto" и не греть голову, а лучше чтоб вообще ему ничего не ставить, и по-умолчанию открывать бокс, но дать желающим такую настройку, чтоб бокс не открывать, а получать в прожектор сообщение об ошибке и обрабатывать его по своему усмотрению (очень симпатичный синтаксис ты привел!)) Заголовок окна бокса, наверно, трудно сделать настраиваемым? Если трудно, пусть будет просто всем понятный Error))) Насчет овчинки не соглашусь. Во флэше можно сделать сообщение "в стиль", не нарушая видеоряда презентации прыгающими окнами и чужеродным вин-интерфейсом. Человек нажимает красивую кнопочку в презентации, и - оппа - получает такое же красивое предложение листать потихоньку дальше))) а не удар молотком по пальцам. Путь к ненайденному файлу - да, хорошо бы конечно полный, если это возможно. Собственно, никогда не видел в подобных боксах относительных путей)) Спасибо за заботу о нас, медиасиротах))) |
Ок. Поработаю. Wolsh, Mnilionic - спасибо за отклик.
Предлагаю двигаться от простого - пусть будет все-таки вариант с одним прожектором, множественность пока оставим в стороне. Честно, очень не хочется огород городить))). Лучше потратиться на предложенную Wolsh'ем опциональность. Ну если придется - что ж.. Mnilionic разумно указал на возможные камни. Короче, загрузили вы меня достаточно )). Посмотрим, что выйдет. UDP: вышло вот что. |
как раз на ноуте у меня XP,а вот на компе Vista
|
| Часовой пояс GMT +4, время: 19:07. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.