![]() |
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 |
Re: mp3's mit meinem Programm Verknüpfen-Problem
hi,
du must für dein programm die dateiendung registrieren ![]() 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 ;) |
Re: mp3's mit meinem Programm Verknüpfen-Problem
auf dieser seite war ich auch schon..
hab das mal so gelöst:
Delphi-Quellcode:
..funktioniert aber auch nicht...keine ahnung wiso...
InstallExt('.mp3', 'Öffnen mit ShowMp3', 'mp3-Datei', application.ExeName, paramstr(0), 0);
ist etwas falsch? edit: ok, das war falsch... aber auch mit
Delphi-Quellcode:
gehts nicht
InstallExt('.mp3', 'Öffnen mit ShowMp3', 'mp3-Datei', application.ExeName, '%1',0);
|
Re: mp3's mit meinem Programm Verknüpfen-Problem
hrm... lass mal den . bei .mp3 weg :)
|
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. |
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? |
Re: mp3's mit meinem Programm Verknüpfen-Problem
Zitat:
so funktionierts..., warum nicht auch anders?? |
Re: mp3's mit meinem Programm Verknüpfen-Problem
Moin urbanbruhin,
Wenn du die Function von dieser Seite ![]() 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. |
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:
aufgerufen habe ich sie jetzt mit:
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;
Delphi-Quellcode:
ich kapier einfach nicht, wiso das nicht klappt! in der registry steht bei (Standard) immer MEIN wert, also mp3-Datei...
InstallExt('mp3', 'mp3-Datei', 'Öffnen_mit_ShowMp3', application.ExeName, '"%1"',0);
|
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:
=> ExtDescription darf meiner Meinung nach keine Leerzeichen enthalten
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; => 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:37 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