Delphi-PRAXiS

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.

100nF 9. Apr 2005 10:21

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

vielen dank für deine mühe, aber es funzt immer noch nicht, obwohl 'successful!' erscheint...

ich glaube ich gebs auf...

MathiasSimmack 9. Apr 2005 10:28

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
Hier treibt sich irgendwo meine Hier im Forum suchenTFileTypeRegistration-Unit rum. Allerdings gab es in der API-Variante einen Bug, und ich weiß aus dem Kopf gerade nicht, ob hier in der DP die aktuelle Version als ZIP vorhanden ist. Notfalls mal die Beiträge durchlesen (´s sind ja nicht viele) und schauen. Du kannst es ja mal damit probieren.

Edit: Es gibt zwei Varianten im ZIP-Archiv. Eine benutzt die Registry-Unit von Borland, und da gibt es keinen Fehler (jedenfalls hat keiner bisher was gesagt). Die zweite Version benutzt das Win32-API, und dabei ist mir ein Parameterdreher unterlaufen. :oops:


Im DF gibt´s sogar ´ne CSharp-Version. Habe ich nie erzählt, is´ aber so. :stupid:

Nogge 9. Apr 2005 10:49

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
Was passiert denn, wenn du mit Rechtklick auf die Datei gehst? Was wird dir zum Öffnen der Datei angeboten? Was ist fett markiert?

100nF 9. Apr 2005 10:57

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
also wegen der TFileTypeRegistration: die hab ich auch schon gefunden und heruntergeladen, weiss aber nicht genau was ich damit anfangen soll...

Zitat:

Was passiert denn, wenn du mit Rechtklick auf die Datei gehst? Was wird dir zum Öffnen der Datei angeboten? Was ist fett markiert?
kein eintrag von meinem programm vorhanden, fett markiert ist "Wiedergabe" und wird mit musicmatch geöffnet.

Nogge 9. Apr 2005 11:08

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
ziemlich mysteriös^^
Wenn du MisicMatch nicht mehr breuchst, entferne ihn doch aus der Registry und versuche dann noch mal dein Glück.

MathiasSimmack 9. Apr 2005 11:13

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

Zitat von urbanbruhin
also wegen der TFileTypeRegistration: die hab ich auch schon gefunden und heruntergeladen, weiss aber nicht genau was ich damit anfangen soll...

Also, so schwer ist das ja nun auch nicht: Beispiel.

100nF 9. Apr 2005 13:02

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
naja, das problem ist, dass ich keine kompos installieren kann, da ich mal irgendetwas falsch gemacht habe...

ich habe jetzt alle einträge in der registry, die etwas mit musicmatch zu tun hatten, gelöscht, funzt aber immer noch nicht... :gruebel:

ich glaube, ich lass das dann halt doch sein... :|

MathiasSimmack 9. Apr 2005 13:44

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

Zitat von urbanbruhin
naja, das problem ist, dass ich keine kompos installieren kann, da ich mal irgendetwas falsch gemacht habe...

Also, wenn du von TFileTypeRegistration sprichst; das ist keine Komponente. Es ist einfach nur eine einfache Klasse (und die ist einfach klasse), die man ganz simpel im Code aufruft. Mehr nicht.

Ansonsten würde ich an deiner Stelle aufhören, wild in der Registry rumzulöschen. Vllt. solltest du lieber überlegen, ob du in letzter Zeit was an deinem System verändert hast, das u.U. die Probleme erklären würde. Ich meine, wenn ich höre, dass Peter Huth (@Hallo Elke! :hi:) erklären muss, dass man auch unter XP Home eingeschränkte User anlegt (weil einige mit Admin-Rechten surfen und sich wundern, wenn ihr System von Viren und Co. überrannt wird), und wenn ich dann höre, dass sich einige Experten dabei gleich noch selbst aussperren :lol:, ... na ja ...

100nF 9. Apr 2005 14:00

Re: mp3's mit meinem Programm Verknüpfen-Problem
 
ok, konnte diese klasse jetzt einbauen, änderte sich aber garnichts, nichtmal das menü bei einem rechtsklick :wall:

aber mir ist da gerade eine idee in den sinn gekommen:
was würde passieren, wenn ich zuerst den dateityp ".mp3" deinstalliere (ftr.UnregisterExtension('.mp3')), und danach wieder installiere, allerdings mit meinem programm verknüpft?
würden denn alle einträge (bis auf die standard-einträge) aus dem rechtsklickmenü gelöscht werden?
oder bleiben die?

war nur so eine idee. bitte benachrigtigt mich, falls es eine schlechte idee ist, noch bevor ich ungeduldig werde und es ausprobiere :roll:


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