Delphi-PRAXiS

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 10:23


Prüfen welche Codecs sind installiert sind???
 
Hallo Leute!

Ein guter Freund von mir möchte eine CD mit einem VideoClip veröffentlichen. Ich soll für Ihn eine Routine erstellen, die prüft, ob denn DivX oder ähnliches auf dem Rechner installiert ist. Wenn nicht, würde ich dann das setup dazu aufrufen.

Kann mir einer verraten, wie ich prüfen kann, welche Codecs installiert sind!?

HaZe 26. Nov 2004 10:28

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


überprüfe doch ob in der registry der pfad zum codex vorhanden ist, also so würde ich es machen, dann lese den pfad zum player und überprüfe die checksumme der datei


cYa

HaZe

Robert Marquardt 26. Nov 2004 11:23

Re: Prüfen welche Codecs sind installiert sind???
 
Und warum sich nicht mit DirectX/DirectShow beschaeftigen? Dort lassen sich die Codecs sicher aufzaehlen.

Steve 26. Nov 2004 11:34

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

ich werf hier mal MSDN-Library durchsuchenICLOCATE in den Raum.

Gruß
Stephan :dance: :xmas:

torud 26. Nov 2004 12:14

Re: Prüfen welche Codecs sind installiert sind???
 
Also ich habe mal auf meinem Rechner geschauht und gesucht und bin dann doch noch fündig geworden.

Ich habe nun folgenden Schlüssel gefunden:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Contro l\MediaResources\icm\vidc.DIVX

Damit ich nun komplatibel zwischen den Systemen bin, wollte ich noch kurz wissen, ob ich mir denn sicher sein kann, dass dieser Schlüssel auch wirklich von Win98 über Win2000 bis WinXP überall gleich lautet???

Wenn ja, wäre das dann ja doch relativ einfach zu machen, denn wenn Schlüssel nicht, dann Setup...

HaZe 26. Nov 2004 12:20

Re: Prüfen welche Codecs sind installiert sind???
 
hi also unter 2k ist er auch dort
bei xp is es auch so
bei NT4/98 kann ich dir keinen auskunft geben


cya

HaZe

torud 26. Nov 2004 12:25

Re: Prüfen welche Codecs sind installiert sind???
 
ok, 98 habe ich selbst und nt sollte dann auch so sein bzw. kann ich selbst verifizieren.

Da Du nicht wieder sprochen hast, gehe ich davon aus, dass ich den richtigen Ordner in der Registry gefunden habe. Noch eins dazu:

Ich bin mir nun nicht ganz sicher, welchen Wert ich aus der Registry nehmen soll. In der Description meines DivX-Anbieters steht nun

Description : DivX 5.0 Codec

Wenn dieser Codec nun von einem anderen Anbieter/Vertreiber oder was auch immer kommt, steht dann das selbe dort an Ort uns Stelle? Ich frage nur, um sicherzugehen.

Sprint 26. Nov 2004 12:40

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

Zitat von torud
Ich habe nun folgenden Schlüssel gefunden:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Contro l\MediaResources\icm\vidc.DIVX

Das sagt nichts darüber aus, ob man AVI Filme die mit DivX codiert auch abspielen kann. Bei mir steht z.B.: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Contro l\MediaResources\icm\vidc.XVID

Weil ich kein DivX installiert habe, sondern 3ivx. Und mit diesem Codec kann ich natürlich auch DivX Filme anschauen.

torud 26. Nov 2004 12:44

Re: Prüfen welche Codecs sind installiert sind???
 
Oje und wie löse ich nun diese Problem???

Sprint 26. Nov 2004 13:18

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

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

Mit ICLocate. Such' mal bei Google in den Newsgroup. Da findest du paar C Beispiele. Kannst du so ohne Probleme umschreiben. Wenn du nicht weiter weißt, dann nochmal fragen.

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 02:48 Uhr.

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