Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Регистрация Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Блоги > alexcon314

Оценить эту запись

Да здравствует стандартный проектор!

Запись от alexcon314 размещена 09.06.2009 в 11:54
Обновил(-а) alexcon314 20.05.2010 в 17:21

Да. Именно страндартный.
Что же в нем хорошего? По функционалу стремится к обычному вьюеру swf-файлов. Блеклый дизайн, никакой возможности чего-то поднастроить, поменять, а уж про взаимодействие с системой лучше и не заикаться... унылый fscommand не в счет.. То ли дело mdm Zinc или там еще что покруче, f-in-box, скажем.. Вот это свобода!
Тем не менее, у проектора есть два супердостоинства.

1. Вы можете свободно его распространять (продавать), как дистрибьютор, как разработчик и дистрибьютор в одном лице. Сделал - продал. Все.
Напомню, что Adobe Flash Player (ActiveX) распространять нельзя. И если ваша программа использует этот контрол, вы должны учитывать это обстоятельство на все 100%. При этом совершенно не важно, ваша это программа целиком, или частично, например, вы пользовались цинком или финбоксом или еще чем-то подобным.

2. Проектор - это самодостаточный исполняемый модуль (в известном смысле). Для его работы не требуется никаких предустановленных рантаймов, модулей, регистрации, особых привилегий пользователя и пр.. То бишь, это полноценное standalone application. Можно было бы сказать "десктоп-приложение", но по понятным причинам до этого термина проектор все-таки не дотягивает.
Для тех, кто сталкивался с написанием оболочек для плеера или хоть как-то этим вопросом интересовался, должно быть понятно - это не так уж просто, сделать такую штуку самому. Я пробивал эту тему довольно длительный срок, не нашел ничего, кроме туманных намеков, не говоря о готовых решениях с открытыми исходниками. Проблему удалось вконце-концов решить, собрав кусками инфу из совершенно разных источников, порядком подковавшись... А тут - на те, все уже работает, и делать ничего не надо.

Вот и подумалось мне, чего такому добру зазря пропадать? А давай-ка мы этот самый проектор малость поправим, да так, что б все взаправду, как у цинка было!
НО! Никаких модификаций-декомпиляций-реверсинга и прочих разных нехороших штучек. Ибо все достоинтсва насмарку пойдут. И без пижонства, пожалуйста! ResHacker - это для малышей из подготовительной группы... Тут тоньшее надо ... Что бы ни один битик исходного кода не затронуть!

Понятно, что когда речь идет об оболочке-расширении, имеется в виду как минимум ТРИ составляющие
-сам плеер;
-неплеерная часть, оболочка-расширение;
-жизнеспопобный канал обмена данными между ними.
В обычных оболочках для связи юзают ExternalInterface со стороны плеера и СОМ-интерфес плеера со стороны оболочки. Для нашей цели это не подойдет.
Стандартный проектор ни в какую не поднимает ExternalInterface (с чего бы?), а доступа к СОМ у нас и в помине нету. Откуда ему взяться, если имеем уже .ехе? Стандартный флэш-проектор сделан вообще без использования флэш-контрола, что, кстати, по некоторым данным дает некоторый выигрыш в производительности, порядка 20~30% по сравнению с ActiveX-плеером.
Ну, фантазией я не богат, потому сяду на любимую лошадку по имени LocalConnection и затяну дооолгую песню..
Собственно, по ЛЦ можно (и должно) вытаскивать и затаскивать данные в плеер (на сторону/со стороны), для того он и предназначен, хвала разрабам плеера. Значит, его и будем юзать.
Вырисовывается генеральный план:
-реализуем ЛЦ в оболочке, насыщаем ее разными фичами;
-в проекторе поднимаем ЛЦ, шлем команды в оболочку, принимаем данные обратно;
-ну, и...
Эмм.. ааа... как собственно... где, собственно это... оболочка ...будет болтаться? Ну проектор мы запустим (даблклик на иконке, что может быть оптимистичней!), а оболочку как мы запускать будем?
Тут варианты
-оболочку сделать отдельным .ехе файлом и запускать ее через тот же fscommand. Ниче так вариантик, есть образец. http://www.flasher.ru/forum/showthread.php?t=116310
Но пришлось на него забить. Дело в том, что когда оболочка крутится отдельным .ехе, вы не сможете из нее получить доступ к интимным чувствам .ехе-проетора, как ни умасливай. А это означает весьма ограниченный функционал, скажем, окно не просабклассишь, даблклик(о.. ), драги-дропы фик отловишь и кучу других очень приятных штучек придется видеть в только красочных похмельных снах..
-оболочку делать как подгружаемый длл-модуль. Ха! И еще раз Ха! Кто, спрашивается, и куда его будет грузиить? Проектор грузит, конечно разные там интересные длл-ки, ибо он есть плоть от крови windows-application (или как там..). Но, чтобы заставить его грузить нашу левую длл-ку.... этто надо .. аа .Знаю! Надо просто взять и поправить таблицу импорта в теле .ехе проектора! И... тьфу, чур! Чур меня, нечистая..
Девственный код проектора... он как ... сами, вобщем, знаете как.
Короче, надо как-то грузить длл-оболочку в АП проектора, не трогая сам проектор.
Для сильно продвинутых даю ссыль, как это можно сделать.
http://www.codeproject.com/KB/threads/winspy.aspx
Из перечисленных "Three Ways To Inject Your Code into Another Process" мне больше приглянулся способ намбер уан, тот что замешан на хуках (Windows Hooks).
Обосную. Такой способ инжекта пропускают антивири. Да, как это ни странно. Сигнатуры CreateRemoteThread и WriteProcessMemory прочно засели в антивирусных базах, видимо, теперь уже навсегда. А вот SetWindowsHook() еще нет и вряд ли засядут, ибо это более щадящий инструмент в плане возможных разрушений, да и масса прог хуки юзает на вполне законных основаниях и с вполне благими намерениями. В принципе, хуки были узаконены в Windows API, как инструмент для дебага.
Ну а про то, как в принципе можно организовать ЛЦ на стороне оболочки доходчиво написано здесь. http://osflash.org/localconnection
Кажется, все приготовили. Можно начинать.
[to be continue..]
Всего комментариев 4

Комментарии

Старый 09.06.2009 13:54 iNils вне форума
iNils
 
Аватар для iNils
А продолжение когда будет?
Старый 09.06.2009 15:15 chingachgoog вне форума
chingachgoog
 
Аватар для chingachgoog
Надо подождать пока создадут свободные полноценные автономные проекторы от Swfdec или Gnash или еще кого.
А тут (с адобовским проектором) по-любому юридический косяк выйдет, когда мы захотим контекстное меню отключить, пусть и через dll-ку запускаемую по LocalConnection или еще как.
Старый 09.06.2009 15:50 alexcon314 вне форума
alexcon314
chingachgoog, на тебя не угодишь)). Косяк будет, если:
- вычистить меню (и т.п.) из стандартного проектора, модифицировав его код;
- ембеддед актив икс. я вообще молчу, ибо это один сплошной косяк.
Прежде чем продолжить, а продолжение будет,надеюсь, лирическое отступление.
Как все это по моему мнению должно работать.
Разработчик изготавливает стандартный проектор в стандартной адобовской ИДЕ. Имеет право.
Разработчик (дистрибьютор) распространяет стандартный проектор, изготовленный в стандартной адобовской ИДЕ.
Имеет право.
Разработчик (дистрибьютор) прилагает к стандартному проектору, изготовленному в стандартной адобовской ИДЕ пару файлов, не имеющих ни к адобу, ни к его лицензиям ни какого отношения.
Имеет право.
Разработчик (дистрибьютор) предлагает юзеру запустить один из этих приложенных файлов.
Имеет право.
Юзер запускает либо сам проектор, либо приложенный файл.
Имеет право.
То, что происходит далее, а именно развертывание оболочки "вокруг" проектора из приложенной длл, не имеет к адобу никакого отношения. Я на своем компьютере могу запускать что хочу и как хочу.
Ничего из лицензий по проектору нарушено не было.
Да, согласен, выглядит громоздко. Прикопаться ... мм.. можно, вобщем.. Однако, никто не заставляет разработчика бить меню и прочие атрибуты адоба. Это раз. Никто не принуждает юзера пользоваться приложенными файлами и объявлять войну адобу. Юзай проектор, если хочешь, в чем проблема, он же первозданный. Это два. Оболочка - суть расширение возможностей. Это три.
Сводить все усилия к тому, чтобы скрыть адобовский копирайт из меню, имхо, НАФИГА? Я вот даже думаю, а не сбацать ли какой-нибудь сплэш, который при старте всего этого хозяйства будет нарочно возвещать о том, какой адоб молодец, мол честь ему и хвала))).
Ну, а что до опенсорс-проекторов.. это, конечно, хорошо - ждать. И даже можно чего-то дождаться, так бывает)).
На память пришла попытка создать опенсорсный Widows. ReactOS. Сравнение несовсем в той весовой категории. Только, что общего в этих попытках, так это непреодолимый временной разрыв.
Да и мкрософт, говорят, немного нервничал, когда увидел оччень микрософтовскую кнопку пуск на таскбаре малышки ReactOS))
Обновил(-а) alexcon314 09.06.2009 в 16:52
Старый 09.06.2009 18:32 chingachgoog вне форума
chingachgoog
 
Аватар для chingachgoog
Цитата:
chingachgoog, на тебя не угодишь))
Что поделать - высокие запросы
Но пока решение найдено даже очень неожиданное: так-как продаваемые приложения все равно защищаются, то все адобовские концы спрятаны в зашифрованный архив.

Цитата:
Сводить все усилия к тому, чтобы скрыть адобовский копирайт из меню, имхо, НАФИГА?
Две основные причины:
1) Убирает ненужное субъективное ощущение клиента, что все что на флеше - туфта (остается гораздо более объективное восприятие приложения именно по результатам работы с ним).
2) Правый клик часто действительно нужен и нужен совсем не для того, чтобы показывать копирайт адоба или даже какое-то меню.

NB!
alexcon314, все равно твоя идея с настройщиком стандартного проектора клевая! Особенно если реализуются наиболее часто используемые фичи Цинка.

PS
А еще хорошо разобраться бы с механизмом зашаренных библиотек. Если научиться им управлять, то...
 

 


Часовой пояс GMT +4, время: 18:49.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2019, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.