Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Registry - FileExtensions eintragen (https://www.delphipraxis.net/42698-registry-fileextensions-eintragen.html)

Jarmen_Kell 22. Mär 2005 18:10


Registry - FileExtensions eintragen
 
Also unter der folgenden Url

http://www.dsdt.info/tipps/?id=236

habe ich eine Function gefunden, um Dateiendungen in die Registry einzutragen.

So das ganze sieht bei mir jetzt so aus.
Also auf einem Form befindet sich eine Check-List-Box (ClBoxFileAssis) u.A mit folgenden Items:

.mp2
.mp3
.wma

Dan wird bei einem ButtonOnClick das folgende gemacht:
Delphi-Quellcode:
var
I:Integer;
begin
 [...]
  for I:=0 to CLBoxFileAssis.Items.Count do
    if CLBoxFileAssis.Checked[I]
      then
        mainform.RegistExtension(ClBoxFileAssis.Items[I],ClBoxFileAssis.Items[I] + '-File','PhynPlayer',mainform.pppath + 'phynplayer.exe',ParamStr(0),'"%1"',0);
Dann in TMainform:

Delphi-Quellcode:
function Tmainform.RegistExtension(Extension, ExtDescription, FileDescription,
OpenWith, ParamString: string; IconIndex: Integer = 0): Boolean;
var
  Reg: TRegistry;
begin
  Result := False;
  if Extension <> '' then
  begin
    if Extension[1] <> '.' then
      Extension := '.' + Extension;

    Reg := TRegistry.Create;
    try
      Reg.RootKey := HKEY_CLASSES_ROOT;
      if Reg.OpenKey(Extension, True) then
      begin
       Reg.WriteString('', ExtDescription);
       if Reg.OpenKey('\' + ExtDescription, True) then
       begin
         Reg.WriteString('', FileDescription);
         if Reg.OpenKey('DefaultIcon', True) then
         begin
           Reg.WriteString('', Format('%s,%d', [OpenWith, IconIndex]));
           if Reg.OpenKey('\' + ExtDescription + '\Shell\Open\Command', True) then
           begin
             Reg.WriteString('', Format('"%s" "%s"', [OpenWith, ParamString]));
             Result:=True;
           end;
         end;
       end;
     end;
  finally
    Reg.Free;
  end;
end;

Nun erscheint der folgende Fehler:
"Incompatible Types: Integer and String" soweit recht logisch. Aber in diesem Fall weiß ich nicht, was hier falsch ist.

:wiejetzt:

Und dann noch etwas: würden damit beim Aufruf mehrerer Dateien über den Explorer auch alle Datei-Namen an das Prog übermittelt werden, oder nur einer davon?

Und denn Sinn von

ParamStr(0), '"%1"'

habe ich auch nicht so ganz verstanden :gruebel:


Joa, mal gucken, ob das jemand erklären kann ^^
Naja bestimmt :thumb:

Luckie 22. Mär 2005 18:14

Re: Registry - FileExtensions eintragen
 
Zitat:

Zitat von Jarmen_Kell
Nun erscheint der folgende Fehler:
"Incompatible Types: Integer and String" soweit recht logisch. Aber in diesem Fall weiß ich nicht, was hier falsch ist.

Deutlicher kann eine Fehlemeldung vom Kompiler kaum noch sein.

Zitat:

Und dann noch etwas: würden damit beim Aufruf mehrerer Dateien über den Explorer auch alle Datei-Namen an das Prog übermittelt werden, oder nur einer davon?
Für jede Datei wir deine neue Instanz deines Programmes gestartet.

Zitat:

ParamStr(0), '"%1"'
"%1" bedeutet, dass die Datei als Parameter an dein Programm weitergeben wird.

Zitat:

Joa, mal gucken, ob das jemand erklären kann ^^
Mit etwas nachdenken, hättest du dir das auch selbner erklären können.

Jarmen_Kell 22. Mär 2005 18:25

Re: Registry - FileExtensions eintragen
 
Fehler: Ja, er ist deutlich, aber hier gehört ein Integer hin und da ist auch einer!
Instanzen: Gut ist bei mir aufgrund einer Mutex nicht möglich, aber ich werd' mich noch mal damit befassen
Parameter: Danke
Nachdenken: Wenn ich es mir erklären könnte, würde ich hier nicht posten

Luckie 22. Mär 2005 18:26

Re: Registry - FileExtensions eintragen
 
Zitat:

Zitat von Jarmen_Kell
Fehler: Ja, er ist deutlich, aber hier gehört ein Integer hin und da ist auch einer!

WO? Ich habe keine Lust deinen ganzen Quellcode nach dem Fehler abzusuchen.

Jarmen_Kell 22. Mär 2005 18:32

Re: Registry - FileExtensions eintragen
 
Da:
Delphi-Quellcode:
mainform.RegistExtension(ClBoxFileAssis.Items[I],ClBoxFileAssis.Items[I] + '-File','PhynPlayer',mainform.pppath + 'phynplayer.exe',ParamStr(0),'"%1"',0);
als Aufruf folgender Funktion:
Delphi-Quellcode:
function Tmainform.RegistExtension(Extension, ExtDescription, FileDescription,
OpenWith, ParamString: string; IconIndex: Integer = 0): Boolean;

Gregg 22. Mär 2005 19:56

Re: Registry - FileExtensions eintragen
 
Zitat:

function Tmainform.RegistExtension(Extension, ExtDescription, FileDescription,
OpenWith, ParamString: string; IconIndex: Integer = 0): Boolean;)
Zitat:

mainform.RegistExtension(ClBoxFileAssis.Items[I],ClBoxFileAssis.Items[I] + '-File','PhynPlayer',mainform.pppath + 'phynplayer.exe',ParamStr(0),'"%1"',0);
Du musst denk ich mal ParamStr(0) und '"%1"' nicht mit Komma, sondern mit einem + verbinden. Probiers mal

Gregg 22. Mär 2005 20:06

Re: Registry - FileExtensions eintragen
 
Bei mir klappts so:

Delphi-Quellcode:
InstallExt('.mp3', 'MP3 - Datei', 'MP3 Audio', Application.ExeName, '%1',0);
InstallExt = RegistExtension

Jarmen_Kell 23. Mär 2005 11:15

Re: Registry - FileExtensions eintragen
 
Ja kuhl jetzt klappt das.
Möglicherweise lag' der Fehler nicht mal unbedingt da

:oops:

Jetzt muss ich nur noch zusehen, dass ich damit mehrere Datei-Parameter an die Appi bekomme, aber ich glaub' das habe ich schon.
Und dann gucken, wie ich das noch mit der Mutex vereinbaren kann.
:gruebel:

Na, fällt mir schon noch ein

Danke vielmals!
( Vor allem, wenn das wirklich gar nicht der Hauptfehler gewesen sein sollte :roll: )

Gregg 23. Mär 2005 13:25

Re: Registry - FileExtensions eintragen
 
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
type
    Einstellungen = record
     Lautstaerke : integer;
     Skin : string[1];        {Buttons}
     playlistnamen : boolean; {Vollst. Namen anzeigen?}
     Color : Tcolor;          {Hintergrund}
     Color_ue : Tcolor;       {Ueberschriftenfarbe}
     Color_sch : Tcolor;      {Schriftfarbe}
     Font_ue : TFont;         {Schriftart(Ueberschriften)}
     Font : TFont;            {Schriftart(Normalschriften)}
    end;

var i,j:integer;
    groesse:longint;
    Sem: THandle;
    strin:string;
    Mutex: THandle;
    Was:Einstellungen;
    f:file of byte;
    temp:textfile;

label 99;

begin
  if paramcount>0 then
  begin
  i:=0;
  assignfile(temp,(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat'));
    if not fileexists(extractfiledrive(paramstr(0))+'\Mediaplayer_System\temp.dat') then
    rewrite(temp) else append(temp);

  99:
  strin:='';
 if (paramcount>0) then
  begin
   {mehre Dateien in Temporärer Datei speichern}
   while not fileexists(strin) do begin
   i:=i+1;
    strin:=strin+paramstr(i);
    end;
    writeln(temp,strin);
    if i<paramcount then goto 99;
    closefile(temp);
   {Überprüfung ende}
    if GetLastError = ERROR_ALREADY_EXISTS then halt;
   listbox1.items.clear;
    listbox1.items.add(extractfilename(strin));
    maxlied:=1;
    mediaplayer1.close;
    Label1.caption:=extractfilename(strin);
   FillID3TagInformation(strin, Title,Artist,Album,Year,Comment, Genre);
   mediaplayer1.filename:=strin;
   mediaplayer1.open;
   SetMPVolume(mediaplayer1,trackbar2.position);
   gesamtzeitsek:=(mediaplayer1.length div 1000);
   gesamtzeitmin:=0;
   trackbar1.max:=mediaplayer1.length;
   gauge1.maxvalue:=mediaplayer1.length;
   while (gesamtzeitsek>=60) do
    begin
     gesamtzeitsek:=gesamtzeitsek-60;
     gesamtzeitmin:=gesamtzeitmin+1;
    end;
   if gesamtzeitsek<10 then gesamtzeit.caption:=inttostr(gesamtzeitmin)+':0'+inttostr(gesamtzeitsek)
   else gesamtzeit.caption:=inttostr(gesamtzeitmin)+':'+inttostr(gesamtzeitsek);
  mediaplayer1.play;
  end;
end;
  for i:=0 to MaxID3Genre do genre.items.add(ID3Genre[i]);

  MediaplayerMsg := RegisterWindowMessage('Mediaplayer');
  Mutex := CreateMutex(nil, False, 'Mediaplayer');
  if GetLastError = ERROR_ALREADY_EXISTS then halt;
  if Mutex <> 0 then
    ReleaseMutex(Mutex);
Das is meine Form.Create Methode

Hoffe ich konnte helfen

Jarmen_Kell 23. Mär 2005 13:48

Re: Registry - FileExtensions eintragen
 
Ô.o

Ah ja ... also ich muss gestehen, dass sieht toll aus :roll:

Aber ich hab KP, was das alles soll :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:57 Uhr.
Seite 1 von 2  1 2      

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