![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как подключяются кодаки? [D7, WinXP]
ronyn © (2005-05-06 01:46:00)Пжалста помогите, научите как надо сделать , что бы к проигрывателю подключались дополнительные кодаки? Я из начинающих - поэтому прошу поподробнее, желательно на примере.
Заранее благодарю.
kai (2005-05-10 07:25:00) [1]ronyn (10.05.05 01:47) [11]
другие кодеки нужно наверно. какие - не знаю, я только с mpeg4 работал.
ronyn (2005-05-10 01:47:00) [2]Приложение запускается, но файлы DVD - MPEG2,1,bup, ifo не проигрываются. В чём может быть дело?
ronyn (2005-05-09 01:10:00) [3]Спасибо,kai, проверю - сообщу результат. очень благодарен.
kai (2005-05-08 17:10:00) [4]ronyn (08.05.05 16:25) [8]
interface
uses Registry;
ronyn (2005-05-08 16:25:00) [5]Не получается почему -то. Говорит сто TRegistry - не задекларированный идентификатор.
kai (2005-05-07 11:29:00) [6]пример проверки зарегистрированного декодера xvid
_Reg := TRegistry.Create(KEY_READ);
try
_Reg.RootKey := HKEY_CLASSES_ROOT;
if _Reg.KeyExists(XVID_DECODER_PATH_KEY) then
begin
_Reg.OpenKey(XVID_DECODER_PATH_KEY, False);
_Name := _Reg.ReadString('');
if FileExists(_Name) then
begin
//тут можно проверить версию (а можно и не проверять ;) )
XVidInstRequired := False;
end;
end;
finally
_Reg.Free;
end;
константы:
XVID_DECODER_PATH_KEY = '\CLSID\{64697678-0000-0010-8000-00AA00389B71}\InprocServer32';
переменные:
_Reg: TRegistry;
_Name: String;
XVidInstRequired: Boolean;
ronyn (2005-05-07 02:09:00) [7]Kai, спасибо за помощь. Буду узнать о том, как делать проверку наличия и версии установленного activex-а перед копированием/регистрацией.Чем больше комментариев - тем лучше, т.к. я из начинающих многого не знаю ещё. Заранее благодарю.
kai (2005-05-07 00:14:00) [8]type
TRegFunc = function : HResult; stdcall;
kai (2005-05-06 21:47:00) [9]ronyn (06.05.05 01:46)
обычно декодеры поставляются в виде activex-ов
достаточно скопировать их в папочку %WIN%\SYSTEM32
и зарегистрировать вызвав функцию DllRegisterServer. либо с помощью regsvr32.exe (первый вариант лучше)
вот кусок кода устаноки декодера xvid (требуется 2 файла: xvid.ax, xvid.dll)
FillChar(aSystemDirZ, Length(aSystemDirZ), 0);
GetSystemDirectory(aSystemDirZ, 2047);
fSystemDir := aSystemDirZ; //кривовато, но перепишу на досуге -)
try
if CopyFile(PAnsiChar(ExtractFilePath(Paramstr(0)) + XVID_DECODER_OCX_FILENAME),
PAnsiChar(IncludeTrailingPathDelimiter(fSystemDir) + XVID_DECODER_OCX_FILENAME), False) and
CopyFile(PAnsiChar(ExtractFilePath(Paramstr(0)) + XVID_DECODER_DLL_FILENAME),
PAnsiChar(IncludeTrailingPathDelimiter(fSystemDir) + XVID_DECODER_DLL_FILENAME), False) then
begin
_Name := IncludeTrailingPathDelimiter(fSystemDir) + XVID_DECODER_OCX_FILENAME;
end
else
begin
_Name := ExtractFilePath(Paramstr(0)) + XVID_DECODER_OCX_FILENAME;
end;
aHandle := LoadLibrary(PAnsiChar(_Name));
try
if (aHandle >= 32) then
begin
aFunc := GetProcAddress(aHandle, 'DllRegisterServer');
if Assigned(aFunc) then
aFunc;
end;
finally
FreeLibrary(aHandle);
end;
except //невозможно установить видео декодер
end;
переменные:
aSystemDirZ: array[0..2047] of Char;
fSystemDir: String;
aHandle: Cardinal;
aFunc: TRegFunc;
естественно, надо проверку наличия и версии установленного activex-а сделать перед копированием/регистрацией. если интересно - могу написать как. ну и права админа нужны для доступа к system32.
еще есть нюансы связанные с xvid, которые жить мешают немного...
удачи.
WondeRu (2005-05-06 15:18:00) [10]DSPack
ronyn (2005-05-06 12:53:00) [11]Я имею ввиду, чтобы мой проигрыватель - TMediaPlayer, искал и подключал эти кодаки.
dmitry501 (2005-05-06 05:38:00) [12]ronyn (06.05.05 1:46)
Скачиваешь с интернета, жмешь setup.exe и все!