AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Registry - FileExtensions eintragen
Thema durchsuchen
Ansicht
Themen-Optionen

Registry - FileExtensions eintragen

Ein Thema von Jarmen_Kell · begonnen am 22. Mär 2005 · letzter Beitrag vom 24. Mär 2005
Antwort Antwort
Seite 1 von 2  1 2      
Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#1

Registry - FileExtensions eintragen

  Alt 22. Mär 2005, 19:10
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.



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


Joa, mal gucken, ob das jemand erklären kann ^^
Naja bestimmt
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Registry - FileExtensions eintragen

  Alt 22. Mär 2005, 19:14
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#3

Re: Registry - FileExtensions eintragen

  Alt 22. Mär 2005, 19:25
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
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Registry - FileExtensions eintragen

  Alt 22. Mär 2005, 19:26
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.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#5

Re: Registry - FileExtensions eintragen

  Alt 22. Mär 2005, 19:32
Da:
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;
  Mit Zitat antworten Zitat
Gregg

Registriert seit: 6. Mär 2005
Ort: Schwarzenberg
33 Beiträge
 
Delphi 3 Client/Server
 
#6

Re: Registry - FileExtensions eintragen

  Alt 22. Mär 2005, 20:56
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
Es gibt keine Liebe auf dieser Welt.
Es ist ein Traum, der uns gefällt.
Es gibt nur Lüge, Gier und Hass,
soviele Tränen dick und nass..
  Mit Zitat antworten Zitat
Gregg

Registriert seit: 6. Mär 2005
Ort: Schwarzenberg
33 Beiträge
 
Delphi 3 Client/Server
 
#7

Re: Registry - FileExtensions eintragen

  Alt 22. Mär 2005, 21:06
Bei mir klappts so:

InstallExt('.mp3', 'MP3 - Datei', 'MP3 Audio', Application.ExeName, '%1',0); InstallExt = RegistExtension
Es gibt keine Liebe auf dieser Welt.
Es ist ein Traum, der uns gefällt.
Es gibt nur Lüge, Gier und Hass,
soviele Tränen dick und nass..
  Mit Zitat antworten Zitat
Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#8

Re: Registry - FileExtensions eintragen

  Alt 23. Mär 2005, 12:15
Ja kuhl jetzt klappt das.
Möglicherweise lag' der Fehler nicht mal unbedingt da



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.


Na, fällt mir schon noch ein

Danke vielmals!
( Vor allem, wenn das wirklich gar nicht der Hauptfehler gewesen sein sollte )
  Mit Zitat antworten Zitat
Gregg

Registriert seit: 6. Mär 2005
Ort: Schwarzenberg
33 Beiträge
 
Delphi 3 Client/Server
 
#9

Re: Registry - FileExtensions eintragen

  Alt 23. Mär 2005, 14:25
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
Es gibt keine Liebe auf dieser Welt.
Es ist ein Traum, der uns gefällt.
Es gibt nur Lüge, Gier und Hass,
soviele Tränen dick und nass..
  Mit Zitat antworten Zitat
Jarmen_Kell

Registriert seit: 17. Mär 2005
188 Beiträge
 
#10

Re: Registry - FileExtensions eintragen

  Alt 23. Mär 2005, 14:48
Ô.o

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

Aber ich hab KP, was das alles soll
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr.
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