![]() |
Dateiendung .mp3 Registrierung klappt nicht!
Hi Leute.
Will die Dateiendung .mp3 mit meinem Programm und meinem ICON verknüpfen [Wenn man also eine mp3 im Explorer sieht, hat diese mein Icon; bei doppelklick wird mein Programm geöffnet!] Hab mir auch aus dem Netz folgenden Code geholt:
Code:
function tmainform.InstallExt(Extension, ExtDescription, FileDescription,
OpenWith, ParamString: string; IconIndex: Integer): 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\Open\Command', True); WriteString('', '"' + OpenWith + '" "' + ParamString + '"'); end; Result := True; except Result := False; end; Reg.Free; end; der hat auch immer funktioniert, doch wenn ich jetzt den MS Mediaplayer oder Winamp starte, und diese dann sofort .mp3 mit sich selbst wieder verknüpfen, funzt der Code nicht mehr( Bei erneutem Öffnen meines Programms und ausführen der oben genannten Routine!) Also: Was machen die großen Player, damit ihr ICON sofort angezeigt wird, und das jede mp3 mit dem jeweiligen Player geöffnet wird??? DaDu |
Re: Dateiendung .mp3 Registrierung klappt nicht!
Also ich hätte das so gemacht:
Delphi-Quellcode:
Grußregist:=TRegistry.Create; With regist do try RootKey:=HKEY_CLASSES_ROOT; OpenKey('.mp3', true); WriteString('', 'Programmname'); CloseKey; OpenKey('Programmname', true); WriteString('', 'MP3-Datei'); OpenKey('DefaultIcon', true); WriteString('', 'Pfad zum Icon'); CloseKey; OpenKey('Programmname\Shell\Open', true); WriteString('', 'Mit Programm öffnen'); CloseKey; OpenKey('Programmname\Shell\Open\Command', true); WriteString('', '"Pfad zur exe-Datei" "%1"'); CloseKey; finally free; end; S2B :dance: |
Re: Dateiendung .mp3 Registrierung klappt nicht!
Zitat:
Zitat:
Delphi-Quellcode:
SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,nil,nil);
Zitat:
Im Prinzip müsstest du also auch so rabiat sein und die Endung immer wieder auf dein Programm registrieren. Mach´s aber abschaltbar, so dass der User noch die Wahl hat. ;) |
Re: Dateiendung .mp3 Registrierung klappt nicht!
@MathiasSimmack
Was macht "SHChangeNotify(SHCNE_ASSOCCHANGED,SHCNF_IDLIST,ni l,nil);"? Also hab das mal eingebunden, hat aber nicht das Icon meines Programms mit der Endung .mp3 verknüpft. @alle Hab wohl das zentrale Problem gefunden!: In der registry ist mit meiner procedure alles geändert, aber es gibt unter Windows noch eine Funktion ("Systemsteuerung/Ordneroptionen/Dateitypen") dort kann man auch ein Programm einer Endung zuordnen! Und das hatte ich auch gemacht, nämlich dem MS Mediaplayer. Problem: Wenn man dort das Programm ändert wird nicht der bekannte registry-Pfad aus meiner Procedure geändert=> Es gibt noch einen anderen Ort, wo Windows Datei-Endungs-Verknüpfungen speichert! (Nur wo?) PS: Diese Sytemsteuerungs-Einstellung steht wie's aussieht auch über der Standart registry Einstellung(Windows ignoriert deshalb den Eintrag durch meine Procedure) DADU |
Re: Dateiendung .mp3 Registrierung klappt nicht!
Zitat:
Gruß S2B :dance: |
Re: Dateiendung .mp3 Registrierung klappt nicht!
Moin S2B,
Zitat:
Durch das Schliessen des Handels wird "lediglich" die Resource wieder freigegeben (und sollte deswegen auch auf jeden Fall gemacht werden. Stichwort Resourcenschutzblock) |
Re: Dateiendung .mp3 Registrierung klappt nicht!
Zitat:
Zitat:
Zitat:
|
Re: Dateiendung .mp3 Registrierung klappt nicht!
Hab die Antwort selbst gefunden:
Benutzt folgenden Code und ihr setzt euch gegen alle großen Programme durch Überall wo "DaDuMediaPlayer5" muss dann euer Name rein
Delphi-Quellcode:
Funzt perfekt!function tmainform.InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString: string; IconIndex: Integer): Boolean; var Reg: TRegistry; begin Reg := TRegistry.Create; try with Reg do begin //Normale Teil RootKey := HKEY_CLASSES_ROOT; OpenKey(Extension, True); WriteString('', ExtDescription); OpenKey('\' + ExtDescription, True); WriteString('', FileDescription); OpenKey('DefaultIcon', True); WriteString('', OpenWith + ',' + IntToStr(IconIndex)); OpenKey('\' + ExtDescription + '\Shell\Open\Command', True); WriteString('', '"' + OpenWith + '" "' + ParamString + '"'); //Neu Teil RootKey := HKEY_Current_User; OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\', True); if KeyExists('.mp3') then DeleteKey('.mp3'); RootKey := HKEY_Local_Machine; OpenKey('\Software\Classes\DaDuMediaPlayer5\DefaultIcon', true); WriteString('', Application.ExeName + ',' + IntToStr(1));//Pfadname+ Iconindex OpenKey('\Software\Classes\DaDuMediaPlayer5\Shell\Open\Command', true); WriteString('', '"' + Application.ExeName + '" "' + '%1' + '"'); OpenKey('\Software\Classes\.mp3', true); WriteString('', 'DaDuMediaPlayer5'); OpenKey('\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.mp3', True); WriteString('', 'DaDuMediaPlayer5'); SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);// aktuallisiert die Icons end; Result := True; except Result := False; end; Reg.Free; end; Hab mir einfach mal angeguckt wo Windows dieses Öffnen mit aus der Systemsteuerung in der registry speichert Zitat:
|
Re: Dateiendung .mp3 Registrierung klappt nicht!
Moin dadu,
Zitat:
Vorweg: Benutzt hast Du ihn sogar, nämlich im Zusammenhang mit dem Registry Objekt Allgemein sieht der so aus:
Delphi-Quellcode:
Wo Du es vergessen hast:
<Resource belegen>
try <Mit der Resource arbeiten> finally <Resource freigeben> end; Bei diversen OpenKey Zeilen. Zu jedem OpenKey gehört auch ein CloseKey, da hier jedesmal eine Resource in Form eines Handles belegt wird. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:15 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