Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 22.01.2007, 17:15
gk-virus gk-virus вне форума
Прохожий
 
Регистрация: 22.01.2007
Сообщения: 3
Репутация: 10
Вопрос Flash скин

Добрый день!

Я flash-дизайнер, последнее мое задание - разработать интерфейс к exe приложению.

Скин сделал на flash, встроил его в форму (в Delphi 7).

Все работает, но у заказчика, да и, естественно, у многих пользователей macromedia flash не установлен для локального воспроизведения - а это делает мою работу бессмысленной - вместо программы у них на экране белое окно.

Всего лишь дизайнер, я не бум-бум ни в C, ни в Delphi, но очень прошу, подскажите пожалуйста, можно ли вшить сам flash-плеер в exe и как, или инсталлятор для него с автоматической установкой при первом запуске приложения, или еще как, чтобы прога была автономной! Очень буду признателен!
Ответить с цитированием
  #2  
Старый 22.01.2007, 17:55
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

Итак =)
Тут есть несколько вариантов:
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  
Старый 22.01.2007, 18:06
gk-virus gk-virus вне форума
Прохожий
 
Регистрация: 22.01.2007
Сообщения: 3
Репутация: 10
По умолчанию

Ясно, спасибо!

А сам плеер в качестве ресурса нельзя подшить, чтобы им и воспроизводить?
Ответить с цитированием
  #4  
Старый 23.01.2007, 11:10
Аватар для 4kusNick
4kusNick 4kusNick вне форума
Местный
 
Регистрация: 06.09.2006
Адрес: Россия, Санкт-Петербург
Сообщения: 444
Репутация: 550
По умолчанию

А как Вы себе представляете это? =) Сам плэйер конечно можно в ресурсы зашить, но он будет проигрывать Вашу флэшку отдельно от программы, надеюсь, я не совсем Вас запутал =)
Я бы посоветовал запихнуть swf файл в ресурсы и из них грузить его (swf файл). Можно даже загрузить ПРЯМО из потока (TThread) ресурсов, если постараться =)Ну а можно сначала сохранять во временную папку, открывать, а потом сразу удалять. Чтобы распаковывать из ресурсов, используйте TResourceStream...

Можно запихнуть в ресурсы ActiveX файл (.ocx), который лежит в папке Windows\System32\Macromed..., но это будет не грамотно, т.к. у пользователя может стоять более новая версия, и все равно придется делать проверки на версии...

В общем, самое рациональное - это проверять версию и просить юзера скачать последнюю версию, если что.
__________________
THE CRACKER IS OUT THERE
Ответить с цитированием
  #5  
Старый 23.01.2007, 12:33
gk-virus gk-virus вне форума
Прохожий
 
Регистрация: 22.01.2007
Сообщения: 3
Репутация: 10
По умолчанию

Понял! Так, в принципе, и проще будет!
Big Thanks!!!
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 20:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter