![]() |
Datein mit meinem Programm öffnen
Hallo ich habe schon gesucht aber nichts gefunden, wie kann ich es anstellen, dass ich z.b *.mp3 Datein mit meinem Programm öffne?
ich habe es so versucht
Delphi-Quellcode:
Allerdings geht es so nicht mit dieser Methode kann ich nur Datein assoziieren, die es noch nicht gibt z.B
function 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; function UnInstallExt(Extension, ExtDescription: String): Boolean; var Reg: TRegistry; begin Reg := TRegistry.Create; try with Reg do begin RootKey := HKEY_CLASSES_ROOT; DeleteKey(Extension); DeleteKey('\' + ExtDescription); end; Result := True; except Result := False; end; Reg.Free; end; ... InstallExt('.mp3', 'MP3 Datei', 'Player', Application.ExeName, '%1',0); UnInstallExt('.mp3', 'MP3 Datei');
Delphi-Quellcode:
Weiß da zufällig jemand ne bessere möglichkeit??
InstallExt('.xyz', 'xyz Datei', 'Player', Application.ExeName, '%1',0);
UnInstallExt('.xyz', 'xyz Datei'); [edit=Christian Seehase]Code-Tags durch Delphi-Tags ersetzt. Mfg, Christian Seehase[/edit] [edit=Christian Seehase] Mfg, Christian Seehase[/edit] |
Re: Datein mit meinem Programm öffnen
Hallo,
kann man das nicht über die Eigenschaften der entsprechenden Datei machen? Rechte Maustaste -> Eigenschaften -> Öffnen Mit: Ändern -> dein Programm rein (Haken bei immer öffnen mit) und gut. Ist aber, wenn ich mir das überleger wahrscheinlich das Gleiche. :mrgreen: mfg freak |
Re: Datein mit meinem Programm öffnen
Ja, das kann man aber das will ich ja nicht.
Es soll ja im Programm einstellbar sein! :wink: Sonst müsste der Benutzer ja bei den entsprechenden Datein erst die rechte Maustaste drücken und mein Programm suchen und auswählen. Das ist aber ja doof. Stell dir mal vor du müsstest erst den Windows Media Player suchen oder Winamp oder so... das würde dich auch nerven oder?? |
Re: Datein mit meinem Programm öffnen
Ich mache es so. :zwinker: Aber ebend nur ein mal. Und dann gilt es für alle Dateien.
Aber auf dein Programm bezogen: Anders geht es wahrscheinlich nicht. Und wenn Windoof es genause macht, kann es nicht flasch sein. :angel2: Was stört dich denn daran? mfg freak |
Re: Datein mit meinem Programm öffnen
Ist das Programm mit dem eine Datei geöffnet werden soll nicht in der Regestry gespeichert???
Glaub ich zumindest. Wenn du also dort den Pfad zu deinem Progi angibst sollte es funken. |
Re: Datein mit meinem Programm öffnen
Moin Florian,
grundsätzlich müsste es funktionieren, allerdings sollte OpenWith auch im Key DefaultIcon in " eingeschlossen werden. Sollten mehr solche Konstruktionen in Deinem Programm auftauchen, wird das System über kurz oder lang eine "Out of Resource" Meldung von sich geben, da die geöffneten Keys nicht wieder geschlossen werden. Das Objekt wird, im Falle einer Exception auch nicht freigegeben. Man sollte bei bestehender Verknüpfung noch die Einstellungen für die alte sichern, und im Fehlerfalle restaurieren. Da zu einer Dateitypverknüpfung auch noch mehr gehört als DefaultIcon und Shell\Open\Command, kann es auch nicht schaden dann einen bestehenden Key erst einmal zu löschen, bevor man die neuen Werte einträgt (wie gesagt, sichern nicht vergessen). Ich hab's mal grob überarbeitet.
Delphi-Quellcode:
begin
Result := false; Reg := TRegistry.Create; try with Reg do begin RootKey := HKEY_CLASSES_ROOT; if not OpenKey(Extension, True) then exit; try WriteString('', ExtDescription); finally CloseKey; end; if not OpenKey('\' + ExtDescription, True) then exit; try WriteString('', FileDescription); finally CloseKey; end; if not OpenKey('DefaultIcon', True) then exit; try WriteString('', '"'+OpenWith + '",'+IntToStr(IconIndex)); finally CloseKey; end; if not OpenKey('\' + ExtDescription + '\Shell\Open\Command', True) then exit; try WriteString('', '"' + OpenWith + '" "' + ParamString + '"'); finally CloseKey; end; end; finally FreeAndNil(Reg); end; Result := true; end; |
Re: Datein mit meinem Programm öffnen
Funzt leider auch nur bei neuen Dateiendungen.
Wenn ich damit mp3 datein registrieren lasse öffnet er sie trotzdem noch mit dem windows media player |
Re: Datein mit meinem Programm öffnen
Moin Florian,
das hat IMHO nichts damit zu tun, ob die Extension schon existiert oder nicht, sondern damit wie sie verknüpft wird. Schau Dir in der Registry mal an, was noch alles in den Keys für die Verknüpfung steht. Ich vermute mal, dass die sich noch zusätzlich als Shell- oder Namespaceextension registrieren, was dann, offensichtlich, Vorrang hat :? |
Re: Datein mit meinem Programm öffnen
Tatsache stimmt sone schei** mit wav funzt es sogar...
mm und nu?? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:08 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