![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проверка на наличие кодека [D5, D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
Dimbas © (2004-04-12 16:02:00)Мастера подскажите плиз как сделать чтобы программа проверяла установлен ли Divx, если нет то сама устанавливала его...
ЮЮ (2004-04-14 06:33:00) [1]const
NOT_INSTALL: string = 'Необходимое программное обеспечение не установлено';
NOT_FOUND: string = 'Необходимое программное обеспечение не найдено';
function GetInfo(GUID: string): string;
//возвращает версию продукта или NOT_INSTALL или NOT_FOUND
const
pv: string =
'P'#0'r'#0'o'#0'd'#0'u'#0'c'#0't'#0'V'#0'e'#0'r'#0's'#0'i'#0'o'#0'n'#0;
var
buff: string;
c: cardinal;
fn: string;
i: integer;
l: integer;
reg: TRegistry;
begin
reg := TRegistry.Create(KEY_READ);
try
reg.RootKey := HKEY_CLASSES_ROOT;
if
Reg.OpenKey(
'\CLSID\' + GUID + '\InprocServer32', false
)
then begin
fn := reg.ReadString('');
if fn <> '' then begin
l := GetFileVersionInfoSize(PChar(fn), c);
SetLength(buff, l);
GetFileVersionInfo(PChar(fn), c, l, @buff[1]);
Result := '';
i := Pos(PV, buff) + length(PV);
l := 1;
while buff[i + l*2] > #0 do begin
Result := Result + buff[i + l*2];
inc(l);
end;
Result := AnsiReplaceText(Result, ',', '.');
Result := AnsiReplaceText(Result, ' ', '');
end
else
Result := NOT_FOUND;
end
else
Result := NOT_INSTALL;
finally
reg.Free;
end;
end;
для DivX:
GetInfo('{78766964-0000-0010-8000-00AA00389B71}');
для MPEG Layer-3:
GetInfo('{38BE3000-DBF4-11D0-860E-00A024CFEF6D}');
CAHEK (2004-04-14 00:23:00) [2]На сколько я помню,DivX кудато в папку Вннды качается,следовательно узнайте этот путь и опред. его через Fileexists();