joynter |
Отправлено: 26.03.2004, 21:28 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
как это делается? |
|
Aptem |
Отправлено: 27.03.2004, 04:55 |
|
Мастер участка
Группа: Участник
Сообщений: 349
|
Берешь одну прогу и пихаешь в другую... ШУТКА !!!
Растолкую по-подробнее, что ты имеешь ввиду. Хочешь запустить программу из другой программы или что... ??? НЕПОНЯТНО !
|
|
joynter |
Отправлено: 27.03.2004, 12:07 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
имеется в виду флеш плейер, окно которого является частью моей формы. Я пробовал через ОЛЮ, но в результате получается только отдельное окно флеш плейера. Используя .res файл — то же самое |
|
klen |
Отправлено: 27.03.2004, 15:01 |
|
Машинист паровоза
Группа: Участник
Сообщений: 239
|
Давай все подробно и по порядку, че ты хочешь сделать. Я делал рекламный диск. ТЗ стояло так, что мне пришлось вставить ActiveX компонент TShockwaveFlash в свою форму, ее выводить в полный экран. У меня все работало.
По сути получился WEB клиент написанный на флеше с графическими примочками и выполняемый программой в которой вставлен компонент флеш-проигрывателя.
Так было сделано потомучто писать графику руками програмно — я б повесился, а так пришлось только в FlashMX рекламный плакатик с кнопками нарисовать и все.
Итак, слушаю Вас внутриматочно.
Отредактировано klen — 27/03/2004, 16:04 |
|
joynter |
Отправлено: 28.03.2004, 04:38 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
В том , то бы вывести отдельное окно плейера на весь экран проблем нет. Интересно вот что : есть (в природе) такие вещи ,как SWF Decompiler и SWF Browser, так там окно плейера встроено в окно формы. Вот мне и интересно, каким образом это можно реализовать. |
|
th1nG |
Отправлено: 28.03.2004, 08:18 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 31
|
порыскай по тори мож найдёш компоненты для работы с флешей..
|
|
klen |
Отправлено: 28.03.2004, 17:42 |
|
Машинист паровоза
Группа: Участник
Сообщений: 239
|
Я чето ниче не понял опять. А чем тебe TShockwaveFlash не нравится?? етож и есть окно проигрывателя, говоришь ему файл *.swf , вызываешь Play() и он тебе его проигрывает............еще вопрос — а куда еще можно встроить окно проигрывателя как не на форму (читай любой TWinControl)
Отредактировано klen — 28/03/2004, 18:46 |
|
joynter |
Отправлено: 29.03.2004, 23:11 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
Re: А чем тебe TShockwaveFlash не нравится??
Дык а где ж взять-то его ???
Мне бы ссылочку или на мыло joynter@yandex.ru (если можно) |
|
klen |
Отправлено: 29.03.2004, 23:31 |
|
Машинист паровоза
Группа: Участник
Сообщений: 239
|
РАААдной мой.. так бы и сказал что в этом проблема
1. Заходишь в меню билдера
Component -> Import ActiveX Control
2. Выбираешь в списке ShockWave Flash , жмешь Install , тебе предложат выбрать вариан размешения — стандартный пакет или новый создать, я например всегда новый создаю, далее инсталируешь пакет, БИЛДЕР УУУМНЫЙ, КАК ВИНДОВС — ОН САМ ВСЕ СДЕЛАЕТ.
У тебя в закладке появится компонент TShockWave, смотриш хидерник который билдер сгенерит длянего — исчерпывающая информация как этим компонентом управлять (если ты знаешь что такое вообще Flash)
Вот и вся ссылка — OCX называется.
Если нада научу Flash'ый OLE сервер ставить на машину где его нет. Вдруг твоя программа на Виндах должна запустится где устаревшая версия или вообще проигрыватель не установлен. |
|
joynter |
Отправлено: 30.03.2004, 00:58 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
Дядя Клен — научи пожалуйста.
Для установки флеш плейера я делал вот так:
#include "vcl.h"
#pragma hdrstop
#include "process.h"
#include "stdio.h"
#include "winbase.h"
#include "fstream.h"
#include "io.h"
#include "fcntl.h"
#include "registry.hpp"
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#pragma resource "*.dfm"
TForm1 *Form1;
TRegistry *reg=new TRegistry;
TRegistry *reg1=new TRegistry;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::InstallClick(TObject *Sender)
{
FILE *in, *out;
int handle = open("SAFlashPlayer.exe",O_RDONLY);
int size = filelength(handle);
close(handle);
in = fopen("SAFlashPlayer.exe", "rb");
out = fopen("c:\\Program Files\\SAFlashPlayer.exe", "wb");
long double countBytes;
for (countBytes=0;countBytes<=size;countBytes++)
{
fputc(fgetc(in), out);
CGauge1->Progress = 100*countBytes/size;
}
fclose(in);
fclose(out);
if(spawnlp(P_NOWAIT,"c:\\Program Files\\SAFlashPlayer.exe","qw.swf",NULL))
//ShowMessage("Fuck");
Sleep(2000);
SendMessage(FindWindow(NULL,"Macromedia Flash Player 7"), WM_CLOSE,0,0);
Install->Enabled = false;
Uninstall->Enabled = true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::UninstallClick(TObject *Sender)
{
reg->RootKey = HKEY_CLASSES_ROOT;
reg1->RootKey = HKEY_LOCAL_MACHINE;
if (reg->KeyExists("\\ShockwaveFlash.ShockwaveFlash\\shell\\open\\command"))
// if (reg->KeyExists("\\Applications\\SAFlashPlayer.exe\\shell\\open\\command"))
if (reg->KeyExists("\\ShockwaveFlash.ShockwaveFlash\\DefaultIcon"))
// if (reg1->KeyExists("\\SOFTWARE\\Classes\\Applications\\SAFlashPlayer.exe"))
{
reg->DeleteKey("\\ShockwaveFlash.ShockwaveFlash\\shell\\open\\command") ;
reg->DeleteKey("\\Applications\\SAFlashPlayer.exe");
reg->DeleteKey("\\ShockwaveFlash.ShockwaveFlash\\DefaultIcon");
reg1->DeleteKey("\\SOFTWARE\\Classes\\Applications\\SAFlashPlayer.exe");
for(int i=100;i>=0;i--)
{
CGauge1->Progress = i;
Sleep(10);
}
DeleteFile("c:\\Program Files\\SAFlashPlayer.exe");
Install->Enabled = true;
Uninstall->Enabled = false;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormActivate(TObject *Sender)
{
reg->RootKey = HKEY_CLASSES_ROOT;
reg1->RootKey = HKEY_LOCAL_MACHINE;
if (reg->KeyExists("\\ShockwaveFlash.ShockwaveFlash\\shell\\open\\command"))
// if (reg->KeyExists("\\Applications\\SAFlashPlayer.exe\\shell\\open\\command"))
if (reg->KeyExists("\\ShockwaveFlash.ShockwaveFlash\\DefaultIcon"))
// if (reg1->KeyExists("\\SOFTWARE\\Classes\\Applications\\SAFlashPlayer.exe"))
{
//ShowMessage("Fuck");
Install->Enabled = false;
Uninstall->Enabled = true;
CGauge1->Progress = 0;
}
else {
Install->Enabled = true;
Uninstall->Enabled = false;
}
}
//---------------------------------------------------------------------------
возможно я не знаю что такое flash (вроде как с нею работал 3 года — но век живи век учись)? И за С++ сел только пол года назад (самоучка) — своих компонентов еще не научился делать.
а можно таки исходник приаттачить или на мыло ?
Отредактировано joynter — 30/03/2004, 02:51 |
|
Gedeon |
Отправлено: 30.03.2004, 09:30 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (klen @ 30/03/2004, 00:33) | тебе предложат выбрать вариан размешения — стандартный пакет или новый создать, я например всегда новый создаю |
И совершенно правильно, поскольку при сборке программы в конечном итоге это влияет на ее размер, так уж устроены в ВСВ линкер + компилер, что они влинковывают в ехе весь пакет, если даже из него используется только один компанент. Если бы все компоненты были в разных пакетах, то мы не имели бы такой раздутый ехе.
Отредактировано Gedeon — 30/03/2004, 10:33
|
|
klen |
Отправлено: 30.03.2004, 11:45 |
|
Машинист паровоза
Группа: Участник
Сообщений: 239
|
Блин, мыло послать нимогу, скоко раз говорить — бомжы мы, нет у нас почтового сервера в сети, поэтому только забирать по HTTP почту умеее из далека , а делать времени нет — защита диссера через 2 месяца, все выкладываю здесь в нитках.
У тебя все правильно в принципе, так тоже наверно можно, но я не так делаю -
1 Рекомендую ставить не SAFlashPlayer.exe , а Flash.ocx — это библиотека с OLE с флешовым сервером. У меня он в папке C:\WINNT\system32\Macromed\Flash\flash.ocx
2 Я ленивый поэтому писсать столько кода мне было в лом.
Я брал просто копировал этот файл на машине на которой запускается приложение(директорию делал произвольную),
3 спомощью команды regsrv32 регистрировал flash.ocx. regsrv32 делает примерно тоже что твой код с реестром.
После этого клиент(компонент TShockWave) находит это OLE сервер и пользуется им
Это все в несколько строчек вмещается.
Примера нет потомучто вин полетел месяц назад, все что нажил непочильным трудом......................поищу на работе, мож найду. Ту все просто, главное идею выкопать.
Флешь ээто круто — я от него стал тащится когда он XML стал поддерживать, счастье было когда я( не один конечно, серверную часть писали мои друзья на яве) написал Web клиента для интернет магазина, с возможностью его администрирования (хозин магазина имел перелом позвоночника и заниматься бизнесом мог только из дома) и все эта система(флешовый клиент как под Mac, Win, Solaris) — везде заработала где имеется плагин к флешовый браузеру. Получается мультиплатформенный клиент.
Я в своих программах и ассемблер и Flash иногда скрещщиваю! КОМПОНЕНТНЫЙ ПОДХОД — ИЗБАВЛЯЕТ ОТ ИЗОБРЕТЕНИЯ ВЕЛОСИПЕДА.
Удачи.
Отредактировано klen — 30/03/2004, 12:57 |
|
joynter |
Отправлено: 31.03.2004, 00:09 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 137
|
Спасибо.
Знать бы еще , что такое нитки — былоб вообще все замечательно |
|