-
-
из реестра все можно узнать
-
там они зарыты в ключах classes это очень сложно, звуковые лежат тут HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Drivers32 но там не все, кроме того x64 не учитываются, привидите пример тогда, "можно" и я могу написать
-
берешь тулзу installedcodec, запускаешь regmon от SysInternals и смотришь, куда тулза лезет. Либо сам ищещь в реестре по именам кодеков.
-
я знаю куда она лезет - писал же - в классы, там туча инфы, должен быть другой способ
-
нашел как через wmi сделать, только почемуто подозрительно мало выдает, 11 штук всего, вот скрипта пример
создаем файлик codec.vbs
--------------
strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_CodecFile")
For Each objItem in colItems Wscript.Echo "Access Mask: " & objItem.AccessMask Wscript.Echo "Archive: " & objItem.Archive Wscript.Echo "Caption: " & objItem.Caption strCreationDate = WMIDateStringToDate(objItem.CreationDate) Wscript.Echo "Creation Date: " & strCreationdate Wscript.Echo "Drive: " & objItem.Drive Wscript.Echo "Eight Dot Three File Name: " & _ objItem.EightDotThreeFileName Wscript.Echo "Extension: " & objItem.Extension Wscript.Echo "File Name: " & objItem.FileName Wscript.Echo "File Size: " & objItem.FileSize Wscript.Echo "File Type: " & objItem.FileType Wscript.Echo "File System Name: " & objItem.FSName Wscript.Echo "Group: " & objItem.Group Wscript.Echo "Hidden: " & objItem.Hidden strInstallDate = WMIDateStringToDate(objItem.InstallDate) Wscript.Echo "Last Accessed: " & strLastAccessed strLastModified = WMIDateStringToDate(objItem.LastModified) Wscript.Echo "Last Modified: " & strLastModified Wscript.Echo "Manufacturer: " & objItem.Manufacturer Wscript.Echo "Name: " & objItem.Name Wscript.Echo "Path: " & objItem.Path Wscript.Echo "Version: " & objItem.Version Next
Function WMIDateStringToDate(dtmDate) WMIDateStringToDate = CDate(Mid(dtmDate, 5, 2) & "/" & _ Mid(dtmDate, 7, 2) & "/" & Left(dtmDate, 4) _ & " " & Mid (dtmDate, 9, 2) & ":" & _ Mid(dtmDate, 11, 2) & ":" & Mid(dtmDate, _ 13, 2)) End Function
-------------- и запускаем в проводнике. в дельфи реализовать несложно, но фильтров там нету :( и почемуто молчит про divx и остальные
-
Кодеки бывают разные. Есть те которые цепляются к DirectX, есть те которые цепляются к vfw. А есть те которые идут вместе с плеером к примеру с медиа плеером классическим идут FFMmeg.
-
если к-лайт установлен, он регистрирует в системе кучу кодеков, которые видно через всякого рода проги, ссылку на скрин в начале приводил и к-лайтовскими утилитами, типа gspod 2.7, в меню System\List codec -мгновенно список выдает полный. кроме того, если запустить виндовский проигрыватель, в меню выбрать "о программе", а в этом окне снизу тыкнуть ссылку "техподдержа" или чивототам, то откроется страничка (локально!) где все они будут видны. не важно какие они бывают, как инфу о них выдрать я спрашиваю из системы, те которые уже зарегены и видятся разными прогами.
-
нашел, короче для вытаскивания видео как выше писал MSVFW32.DLL надо юзать только не так как в примере, а для аудио - Msacm32.dll
-
procedure TAviWriter_2.GetCompressorList(List: TStrings);
var
ii: TICINFO;
i: DWord;
ic: THandle;
BitmapInfoHeader: TBitmapInfoHeader;
function Iterator(var i: DWord): DWord; inline;
begin
Result := i;
Inc(i);
end;
begin
List.Clear;
List.add('No compression');
FillChar(BitmapInfoHeader, SizeOf(BitmapInfoHeader), 0);
with BitmapInfoHeader do
begin
biSize := SizeOf(BitmapInfoHeader);
biWidth := FWidth;
biHeight := FHeight;
biPlanes := 1;
biCompression := BI_RGB;
biBitCount := BitCounts[FPixelFormat];
end;
i := 0;
while True do
begin
ii.dwSize := SizeOf(ii);
if not ICInfo(ICTYPE_VIDEO, Iterator(i), @ii) then
Break;
ic := ICOpen(ICTYPE_VIDEO, ii.fccHandler, ICMODE_QUERY);
if ic = 0 then
Continue;
try
if ICCompressQuery(ic, @BitmapInfoHeader, nil) = 0 then
begin
ICGetInfo(ic, @ii, SizeOf(ii));
List.add(FourCCToString(ii.fccHandler) + ' ' + ii.szName);
end;
finally
ICClose(ic);
end;
end;
end;
Посмотри - может из этого можно что-то взять, кроме списка. Сама компонента - у нас на сайте выложена, если что. http://www.makhaon.com/download/software/AviWriter2.1.zip
-
посмотрел я компоненту, немного не то что нужно, но все равно спасиб. сделал все же через библиотеки как выше писал.
кстати эта компонента чтото не фурычит, при установки ансичары переделал где можно (под рад 2010), вроде встала норм после этого но вот файлы записывать может только когда "без компрессии", но даже в этом случае их невозможно открыть, а при компресии аццес виолатион выдает.
-
|