AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Datein mit meinem Programm öffnen

Ein Thema von kingflo · begonnen am 7. Jan 2005 · letzter Beitrag vom 7. Jan 2005
Antwort Antwort
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#1

Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 12:19
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:
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');
Allerdings geht es so nicht mit dieser Methode kann ich nur Datein assoziieren, die es noch nicht gibt z.B
Delphi-Quellcode:
 InstallExt('.xyz', 'xyz Datei', 'Player', Application.ExeName, '%1',0);
 UnInstallExt('.xyz', 'xyz Datei');
Weiß da zufällig jemand ne bessere möglichkeit??

[edit=Christian Seehase]Code-Tags durch Delphi-Tags ersetzt. Mfg, Christian Seehase[/edit]
[edit=Christian Seehase] Mfg, Christian Seehase[/edit]
Florian Gilde
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 12:36
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.

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#3

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 12:38
Ja, das kann man aber das will ich ja nicht.
Es soll ja im Programm einstellbar sein!
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??
Florian Gilde
  Mit Zitat antworten Zitat
Benutzerbild von freak4fun
freak4fun

Registriert seit: 22. Sep 2004
Ort: Hannover
1.807 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 12:45
Ich mache es so. 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.

Was stört dich denn daran?

mfg
freak
Christian
IT: Schließen Sie bitte das Fenster. User: Die Tür auch?
i++; // zaehler i um 1 erhoehen
  Mit Zitat antworten Zitat
Benutzerbild von Schuster
Schuster

Registriert seit: 21. Okt 2004
Ort: Wien
176 Beiträge
 
Delphi XE7 Architect
 
#5

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 12:45
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.
Markus Schuster
__________________
Markus
http://members.chello.at/delphi-developer
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 13:07
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;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#7

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 13:25
Funzt leider auch nur bei neuen Dateiendungen.
Wenn ich damit mp3 datein registrieren lasse öffnet er sie trotzdem noch mit dem windows media player
Florian Gilde
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 13:40
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
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
kingflo

Registriert seit: 21. Jun 2004
Ort: Hamburg
502 Beiträge
 
Delphi 7 Professional
 
#9

Re: Datein mit meinem Programm öffnen

  Alt 7. Jan 2005, 13:49
Tatsache stimmt sone schei** mit wav funzt es sogar...

mm und nu??
Florian Gilde
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:57 Uhr.
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