|
#1
|
|||
|
|||
Flash скин
Добрый день!
Я flash-дизайнер, последнее мое задание - разработать интерфейс к exe приложению. Скин сделал на flash, встроил его в форму (в Delphi 7). Все работает, но у заказчика, да и, естественно, у многих пользователей macromedia flash не установлен для локального воспроизведения - а это делает мою работу бессмысленной - вместо программы у них на экране белое окно. Всего лишь дизайнер, я не бум-бум ни в C, ни в Delphi, но очень прошу, подскажите пожалуйста, можно ли вшить сам flash-плеер в exe и как, или инсталлятор для него с автоматической установкой при первом запуске приложения, или еще как, чтобы прога была автономной! Очень буду признателен! |
#2
|
||||
|
||||
Итак =)
Тут есть несколько вариантов: 1. Поставлять вместе с программой ActiveX и вручную его регистрировать в системе при установке. Тут большой минус в том, что поставляемый ActiveX будет не последней версией через полгода уже. 2. Проверять, установлен ли у пользователя Flash. Это можно сделать несколькими способами, но наиболее рациональный такой: в конструкцию try..except..end поместить код создания экземпляра объекта TShockwaveFlash: Код:
program VedlandScreensaverSetupRUS; uses //.. ShockwaveFlashObjects_TLB, //.. //.. var Flash: TShockwaveFlash; begin Application.Initialize; Application.Title := 'Title'; try Flash := TShockwaveFlash.Create(nil); Flash.Free; except MessageBox(0,'У Вас не установлен Flash Player.... блабла','Title',MB_ICONERROR); end; //.. Application.Run; //.. end. Но тут тоже есть минус большой: у человека можетбыть и установлен Flash, но какой-нибудь старой версии, что может привести к неработоспособности программы. Тут есть выход, но я сам сейчаснадэтим парюсь: у объекта TShockwaveFlash есть свойство FlashVersion, кажется, так вот по нему можно сделать проверку на версию, но (!) эти гады-разработчики сделали это свойство типа Integer и у меня, допстим, с установленным ActiveX версии 9.0.28.0, значение этого FlashVersion = 589824 и что эти цифры значат, я не совсем понимаю, но, можно предположить, что, если число будет меньше,то и версия тоже,например, я для проверки поставил флэш версии 8.0.24.0 и число стало 524288, так что тут все под вопросом, я пока еще не выяснил точно. Ну с проверкой код будет выглядеть так: Код:
program VedlandScreensaverSetupRUS; uses //.. ShockwaveFlashObjects_TLB, //.. //.. var Flash: TShockwaveFlash; begin Application.Initialize; Application.Title := 'Title'; try Flash := TShockwaveFlash.Create(nil); // если версия Flash'а раньше 8ой, то выдаем сообщение if Flash.FlashVersion < 524288 then MessageBox(0,'У Вас не установлен Flash Player.... блабла','Title',MB_ICONERROR); Flash.Free; except MessageBox(0,'У Вас не установлен Flash Player.... блабла','Title',MB_ICONERROR); end; //.. Application.Run; //.. end. Вобщем вот, если какие вопросы -пишите, разберемся... THE CRACKER IS OUT THERE |
#3
|
|||
|
|||
Ясно, спасибо!
А сам плеер в качестве ресурса нельзя подшить, чтобы им и воспроизводить? |
#4
|
||||
|
||||
А как Вы себе представляете это? =) Сам плэйер конечно можно в ресурсы зашить, но он будет проигрывать Вашу флэшку отдельно от программы, надеюсь, я не совсем Вас запутал =)
Я бы посоветовал запихнуть swf файл в ресурсы и из них грузить его (swf файл). Можно даже загрузить ПРЯМО из потока (TThread) ресурсов, если постараться =)Ну а можно сначала сохранять во временную папку, открывать, а потом сразу удалять. Чтобы распаковывать из ресурсов, используйте TResourceStream... Можно запихнуть в ресурсы ActiveX файл (.ocx), который лежит в папке Windows\System32\Macromed..., но это будет не грамотно, т.к. у пользователя может стоять более новая версия, и все равно придется делать проверки на версии... В общем, самое рациональное - это проверять версию и просить юзера скачать последнюю версию, если что. THE CRACKER IS OUT THERE |
#5
|
|||
|
|||
Понял! Так, в принципе, и проще будет!
Big Thanks!!! |