Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi mp3's mit meinem Programm Verknüpfen-Problem (https://www.delphipraxis.net/43791-mp3s-mit-meinem-programm-verknuepfen-problem.html)

100nF 8. Apr 2005 18:40


mp3's mit meinem Programm Verknüpfen-Problem
 
hallo zusammen,

bitte nicht wütend werden, ich weiss dass das thema schon ein paarmal gefragt worden ist...
ich arbeite an einem mp3player und darin hat es eine checkbox "als standartprogramm für mp3's".
wird abgespeichert in einer .ini, ob checked oder nicht.
bei jedem start des programms würd überprüft, ob eben haken drin oder nicht drin. wenn checked, dann muss jede mp3 datei mit meinem programm verknüpft werden, und bei rechtsklick auf eine mp3 datei ein menüpunkt 'öffnen mit ShowMp3' hinzugefügt werden. wenn möglich sollte das symbol der datei frei wählbar sein, sonst das symbol des programms.

ich bin jetzt schon 2 stunden im internet und habe ziemlich viel code gefunden zu diesem thema, jeder ausprobiert und nichts hat funktioniertè jede mp3 datei wird immer mit musicmatch geöffnet...

weiss da jemand vielleicht eine lösung für das problem??

ich habe win xp prof. + adminrechte

Meflin 8. Apr 2005 18:47

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
hi,

du must für dein programm die dateiendung registrieren
http://www.delphipraxis.net/internal...ct.php?t=27515
funzt einwandfrei ;)

vielleicht holt sich ja dein anderes prog immer wieder die registrierung zurück :?

das mit dem icon hatten wir auch schon oft, such doch mal ;)


100nF 8. Apr 2005 18:54

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
auf dieser seite war ich auch schon..
hab das mal so gelöst:
Delphi-Quellcode:
InstallExt('.mp3', 'Öffnen mit ShowMp3', 'mp3-Datei', application.ExeName, paramstr(0), 0);
..funktioniert aber auch nicht...keine ahnung wiso...
ist etwas falsch?

edit: ok, das war falsch...
aber auch mit
Delphi-Quellcode:
InstallExt('.mp3', 'Öffnen mit ShowMp3', 'mp3-Datei', application.ExeName, '%1',0);
gehts nicht

Meflin 8. Apr 2005 18:59

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
hrm... lass mal den . bei .mp3 weg :)


Christian Seehase 8. Apr 2005 19:03

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
Moin Urban,

probier' es schlicht mal mit dem Extras-Menü aus dem Explorer.

Extras\Ordneroptionen\Dateitypen

Wähl die Endung dort aus, und ändere dann die Verknüpfung auf Dein Programm.
Ich vermute mal, dass das andere Programm eine DDE-Verknüpfung aufgebaut hat, die Deine übersteuert.

100nF 8. Apr 2005 19:05

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
funktioniert leider auch nicht...
aber in der registry ist unter mp3->standart der wert auf "öffnen mit showmp3"

komisch, nicht?

100nF 8. Apr 2005 19:07

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
Zitat:

Zitat von Christian Seehase
Moin Urban,

probier' es schlicht mal mit dem Extras-Menü aus dem Explorer.

Extras\Ordneroptionen\Dateitypen

Wähl die Endung dort aus, und ändere dann die Verknüpfung auf Dein Programm.
Ich vermute mal, dass das andere Programm eine DDE-Verknüpfung aufgebaut hat, die Deine übersteuert.


so funktionierts..., warum nicht auch anders??

Nogge 8. Apr 2005 22:31

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
Moin urbanbruhin,
Wenn du die Function von dieser Seite InstallExt kopiert hast, ist der Punkt vor der Dateiendung egal. Ob du ihn nun setzt oder nicht, ist irrelevant. Auch wenns meiner Meinung nach mit nur einem Parameter ebenfalls sinnlos erscheint, schreib mal "%1" anstatt %1, vllt bringt's das gewünschte "Wunder" ;-)
Aber das wirklich Wichtige, was du mal ändern solltest:
Vertausche Öffnen mit ShowMp3 mit mp3-Datei in deiner Function bzw. lass die Leerzeichen bei Öffnen mit ShowMp3 weg. Das müsste dein Problem eigentlich beseitigen.

100nF 9. Apr 2005 08:37

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
hallo Nogge,

ich habe nicht genau diese function verwendet, hab sie aber auch schon mal ausprobiert.
ich benutzt diese:
Delphi-Quellcode:
function InstallExt(Extension, ExtDescription, FileDescription,
                    OpenWith, ParamString: string; IconIndex: Integer;
                    ExtVerb: string = 'Open'): Boolean;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  try
    with Reg do
     begin
      RootKey := HKEY_CLASSES_ROOT;
      OpenKey(Extension, True);
      WriteString('', ExtDescription);
      OpenKey('\' + ExtDescription, True);
      WriteString('', FileDescription);
      OpenKey('DefaultIcon', True);
      WriteString('', OpenWith + ','+IntToStr(IconIndex));
      OpenKey('\' + ExtDescription + '\Shell\'+ExtVerb+'\Command', True);
      WriteString('', '"' + OpenWith + '" "' + ParamString + '"');
     end;
   Result := True;
  except
   Result := False;
  end;
  Reg.Free;
end;
aufgerufen habe ich sie jetzt mit:
Delphi-Quellcode:
InstallExt('mp3', 'mp3-Datei', 'Öffnen_mit_ShowMp3', application.ExeName, '"%1"',0);
ich kapier einfach nicht, wiso das nicht klappt! in der registry steht bei (Standard) immer MEIN wert, also mp3-Datei...

Nogge 9. Apr 2005 10:08

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
So, ich habe dir jetzt mal für deine Bedürfnisse eine Function geschrieben:
Delphi-Quellcode:
function InstallExt(Extension, ExtDescription, FileDescription, ExecuteDescription,
                    OpenWith, ParamString: string; IconIndex: Integer = 0;
                    ExtVerb: string = 'Open'): Boolean;
var Reg:TRegistry;
begin
  Result:=false;
  Reg:=TRegistry.Create;
  try
    Reg.RootKey:=HKEY_CLASSES_ROOT;
    if Reg.OpenKey(Extension,true) then
    begin
      Reg.WriteString('',ExtDescription);
      Reg.CloseKey;
      if Reg.OpenKey(ExtDescription,true) then
      begin
        Reg.WriteString('',FileDescription);
        if Reg.OpenKey('DefaultIcon',true) then
        begin
          { -- OpenKey öffnet ohne vorangestelltes '\' den beschriebenen
            Unterschlüssel, wenn vorhanden -- }
          Reg.WriteString('',OpenWith+','+inttostr(IconIndex));
          Reg.CloseKey;
          if Reg.OpenKey(ExtDescription+'\Shell',true) then
          begin
            Reg.WriteString('',ExtVerb);               // fett markieren
            if Reg.OpenKey(ExtVerb,true) then
            begin
              Reg.WriteString('',ExecuteDescription);  // z.B. "Open with MyProgramm"
              if Reg.OpenKey('Command',true) then
              begin
                Reg.WriteString('','"'+OpenWith+'" '+ParamString);
                Reg.CloseKey;
                Result:=true;
              end;
            end;
          end;
        end;
      end;
    end;
    finally
      Reg.Free;
    end;
  { -- Icon für die neue Dateiendung setzen/aktualisieren -- }
  { -- benötigt die uses ShlObj -- }
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if InstallExt('.ttt','ttt-datei','my own ext','Play with MyProgramm',
                Application.ExeName,'"%1"',0,'Play') then
  begin
    showmessage('successful!');
  end else showmessage('failure!');
end;
=> ExtDescription darf meiner Meinung nach keine Leerzeichen enthalten
=> ExecuteDescription kannste so schreiben, wie du willst ;-)
Am besten nutzt du auch wirklich den Vorteil des Rückgabewertes (if [...] then), um zukünftige Fehler schneller zu entdecken.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:10 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