Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prüfen welche Codecs sind installiert sind??? (https://www.delphipraxis.net/34668-pruefen-welche-codecs-sind-installiert-sind.html)

torud 26. Nov 2004 13:21

Re: Prüfen welche Codecs sind installiert sind???
 
Sorry, aber ich kann kein C!

Steve 26. Nov 2004 13:22

Re: Prüfen welche Codecs sind installiert sind???
 
Zitat:

Zitat von torud
Oje und wie löse ich nun diese Problem???

Zitat:

Zitat von Steve
ich werf hier mal ICLOCATE in den Raum.

MSDN sagt dazu:
Pointer to a BITMAPINFOHEADER structure defining the input format. A compressor handle is not returned unless it supports this format.

Dazu musste zwar vermutlichst Erstma das Video öffnen, um an nen Bitmapinfoheader zu kommen, aber dafür biste auf der sicheren Seite.

Btw: Warum nicht einfach Video öffnen lassen und wenns net geht, merkt das der User schon und kann DivX dann selber von CD installieren... AcrobatReader installiert sich ja auch nich selbständig, nur weil ich ne PDF runtergeladen hab :mrgreen:


Gruß
Stephan :dance: :xmas:

Sprint 26. Nov 2004 13:35

Re: Prüfen welche Codecs sind installiert sind???
 
Zitat:

Zitat von torud
Sorry, aber ich kann kein C!

Schau dir die Beispiele an. Die wirst du auch verstehen, wenn du kein C kannst. Brauchen nur zwei Records gefüllt werden und einmal die Funktion ICLocate aufrufen. Das ist nichts schweres bei. Nur ein bißchen Tipparbeit.

torud 26. Nov 2004 13:38

Re: Prüfen welche Codecs sind installiert sind???
 
Du schriebst:
Code:
Dazu musste zwar vermutlichst Erstma das Video öffnen, um an nen Bitmapinfoheader zu kommen, aber dafür biste auf der sicheren Seite.
Meinst Du, ich solle es mit Shellexecute versuchen zu öffnen oder meinst du ich soll mir den Header mal durchlesen!?

Steve 26. Nov 2004 14:15

Re: Prüfen welche Codecs sind installiert sind???
 
Hi,

nein das hab ich nicht gemeint -g- Aber ich hab noch ne andere, imho noch einfachere Möglichkeit gefunden, die Codecs aufzulisten. Bisschen umschreiben und schon bekommste raus, ob der gesuchte Codec installiert ist:

Delphi-Quellcode:
(*
Benötigte Konstanten
--------------------
(hier werden als Beispiel ICMODE_FASTDECOMPRESS und ICTYPE_VIDEO benutzt)
*)
CONST
  ICMODE_COMPRESS      = 1;
  ICMODE_DECOMPRESS    = 2;
  ICMODE_FASTDECOMPRESS = 3;
  ICMODE_QUERY         = 4;
  ICMODE_FASTCOMPRESS  = 5;
  ICMODE_DRAW          = 8;

  ICTYPE_VIDEO = ord ('v') +
                 ord ('i') shl 8 + 
                 ord ('d') shl 16 +
                 ord ('c') shl 24;

(*
Benötigte Typen
----------------
*)
TYPE
  TICInfo = packed record
  // enthält Informationen über De/Compressor
    dwSize,
    fccType,
    fccHandler,
    dwFlags,
    dwVersio,
    dwVersionICM : DWORD;
    szName       : array [0..15] of wchar;
    szDescription : array [0..127] of wchar;
    szDriver     : array [0..127] of wchar;
  end;

(*
Benötigte Funktionen
--------------------
*)
  function ICInfo (fccType, fccHandler : DWORD; var ICInfo: TICInfo): BOOL;
  stdcall; external 'msvfw32.dll' name 'ICInfo';

  function ICGetInfo (Handle: THandle; var ICInfo: TICInfo; cb: DWORD): LRESULT;
  stdcall; external 'msvfw32.dll' name 'ICGetInfo';

  function ICClose (Handle: THandle): LRESULT;
  stdcall; external 'msvfw32.dll' name 'ICClose';

  function ICOpen (fccType, fccHandler : DWORD; wMode: UINT): THandle;
  stdcall; external 'msvfw32.dll' name 'ICOpen';

...

IMPLEMENTATION
...


PROCEDURE EnumerateVideoCodecs(aStrings : TStrings);
// Alle gefundenen Video-Codecs, die den Kriterien
// (hier: ICMODE_FASTDECOMPRESS =
// "Decompressor will perform fast (real-time) decompression")
// entsprechen, werden an aStrings angehängt.
VAR
  i   : integer;
  info : TICInfo;
  hic : THandle;
begin
  i:=0;
  WHILE ICInfo(ICTYPE_VIDEO, i, info) DO
  BEGIN
    Hic := ICOpen(ICTYPE_VIDEO, i, ICMODE_FASTDECOMPRESS);
    IF Hic<>0 THEN
    BEGIN
      IF ICGetInfo(hic,info,SizeOf(info)) <> 0 THEN
      aStrings.Add(info.szName + ' (' + info.szDescription + ', ' + info.szDriver+ ')');
      ICClose(Hic);
    END;
    inc(i);
  END;
END;


{ ******************************* }

//edit: Beispielaufruf
procedure TForm1.FormCreate(Sender: TObject);
begin
  EnumerateVideoCodecs(Memo1.Lines);
end;
(abgeleitet von MSDN-Beispielen, Konstanten aus VfW.pas entnommen)


Gruß
Stephan :dance: :xmas:

torud 26. Nov 2004 14:19

Re: Prüfen welche Codecs sind installiert sind???
 
wow, merci erstmal!
werds mir ansehen und versuchen hinzubekommen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:43 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz