![]() |
|
|
|
|
#1
|
|||
|
|||
|
Добрый день!
Я 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.Вобщем вот, если какие вопросы -пишите, разберемся... |
|
#3
|
|||
|
|||
|
Ясно, спасибо!
А сам плеер в качестве ресурса нельзя подшить, чтобы им и воспроизводить? |
|
#4
|
||||
|
||||
|
А как Вы себе представляете это? =) Сам плэйер конечно можно в ресурсы зашить, но он будет проигрывать Вашу флэшку отдельно от программы, надеюсь, я не совсем Вас запутал =)
Я бы посоветовал запихнуть swf файл в ресурсы и из них грузить его (swf файл). Можно даже загрузить ПРЯМО из потока (TThread) ресурсов, если постараться =)Ну а можно сначала сохранять во временную папку, открывать, а потом сразу удалять. Чтобы распаковывать из ресурсов, используйте TResourceStream... Можно запихнуть в ресурсы ActiveX файл (.ocx), который лежит в папке Windows\System32\Macromed..., но это будет не грамотно, т.к. у пользователя может стоять более новая версия, и все равно придется делать проверки на версии... В общем, самое рациональное - это проверять версию и просить юзера скачать последнюю версию, если что. |
|
#5
|
|||
|
|||
|
Понял! Так, в принципе, и проще будет!
Big Thanks!!! ![]() |