![]() |
Mit Programm öffnen... per doppelklick
Hi Leute,
Wiedermal ich: Ich hab nen Programm, was nen bestimmten (ausgedachten z.B. *.bla) Dateityp öffnen kann, geschrieben... Ist es möglich über Delphi hinzukriegen? Ich hab davon leider gar keine Ahnung... Und wie wird das dann abgefragt? Wird irgendwie die geöffnete Datei mitgeliefert? oder nur der Pfad? Wie krieg ich das in die Registry?? Viele, Viele Fragen... Danke schonmal im Voraus con muchos saludos simon |
Re: Mit Programm öffnen... per doppelklick
Du musst dein programm mit dem Dateitypen verknüpfen (wie das geht, weiß ich leider nicht genau - es gibt aber einiges hier im Forum). Wenn du dann soweit bist, wird der Name der geöffneten Datei als Parameter mitgeliefert (geht auch über Rechtsklick auf Datei -> Öffnen mit.. -> Dein Programm). Über ParamCount fragst du ab, wieviele Parameter es gibt. In ParamStr(0) steht der Dateiname (inklusive Pfad) der eigenen Exe, in ParamStr(1) dann der des 1. Parameters - in deinem Fall der der geöffneten Datei (auch inklusive Dateipfad).
Gruß |
Re: Mit Programm öffnen... per doppelklick
ok thx schonmal...
wenn ich jetzt ne neue Forum aufrufe mit checkboxen (für die verschiedenen Dateitypen), wie kann ich dann das über Delphi direkt und nicht von hand hinkriegen? Also: die Verknüpfung meines Programmes mit den einzelnen Dateitypen mfg simon |
Re: Mit Programm öffnen... per doppelklick
Schau mal
![]() |
Re: Mit Programm öffnen... per doppelklick
jo thx das hab ich gesucht, aber ne fehlermeldung:
er kennt kein TRegistry ![]() weiß jemand warum`? mfg simon |
Re: Mit Programm öffnen... per doppelklick
Du musst "Registry" in die "uses"-Klausel mit aufnehmen.
|
Re: Mit Programm öffnen... per doppelklick
ok also hab jetzt:
Delphi-Quellcode:
an sich schön und gut... aber er macht nix... als rückgabewert kommt false... warum das?
procedure TForm1.Button1Click(Sender: TObject);
begin if InstallExt('.SimRap', 'SimRap-Datei', 'Prog by SimonRap', ParamStr(0), '"%1"',0) then Showmessage('Dateiendung konnte erfolgreich registriert werden.'); end; function tform1.InstallExt(Extension, ExtDescription, FileDescription, OpenWith, ParamString: string; IconIndex: Integer = 0): Boolean; var Reg: TRegistry; begin Result := False; if Extension='' then begin if Extension[1] ='.' then Extension := '.' + Extension; Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.OpenKey(Extension, True) then begin Reg.WriteString('', ExtDescription); if Reg.OpenKey('\' + ExtDescription, True) then begin Reg.WriteString('', FileDescription); if Reg.OpenKey('DefaultIcon', True) then begin Reg.WriteString('', Format('%s,%d', [OpenWith, IconIndex])); if Reg.OpenKey('\' + ExtDescription + '\Shell\Open\Command', True) then begin Reg.WriteString('', Format('"%s" "%s"', [OpenWith, ParamString])); Result:=True; end; end; end; end; finally Reg.Free; end; end; end; mfg simon [edit] also paar sachen hab ich geändert, weil er gemeckert hat: if Extension '' then -->> if Extension = '' then if Extension[1] '.' then -->> if Extension[1] = '.' then könnnte es daran liegen? [/edit] |
Re: Mit Programm öffnen... per doppelklick
Debugg doch mal..
Benutzt du Windows Vista oder höher? Dann versuch mal dein Programm im Explorer mit Rechtsklick->"Als Administrator ausführen" zu starten.
Delphi-Quellcode:
Sollte es nicht <> anstatt = heißen im if?
if Extension[1] ='.' then
Extension := '.' + Extension; Und warum
Delphi-Quellcode:
Soll die Erweiterung nur registriert werden, wenn keine angegeben wurde?
if Extension='' then
begin |
Re: Mit Programm öffnen... per doppelklick
Mir hat das hier schon gereicht
Delphi-Quellcode:
Ist für mein Entpacker.
k := Application.ExeName;
reg := Tregistry.Create; try reg.RootKey := HKEY_CLASSES_ROOT; reg.OpenKey('Ultimate Zip\Shell\open\',True); reg.WriteString('','Öffnen mit UZip'); reg.OpenKey('command',True); reg.WriteString('',k+'"%1"'); reg.CloseKey; reg.OpenKey('.zip',True); reg.WriteString('','Ultimate Zip'); finally reg.Free; end; |
Re: Mit Programm öffnen... per doppelklick
jo danke leute^^
|
Re: Mit Programm öffnen... per doppelklick
Zitat:
|
Re: Mit Programm öffnen... per doppelklick
Mit ParamCount und Paramstr machste das so :
Du legst eine Globale Variable an z.B
Delphi-Quellcode:
Das schreibst du dann bei Form.create rein :
Aktive : Boolean ;
Delphi-Quellcode:
Dann bei FormActivate :
procedure TForm1.FormCreate(Sender: TObject);
begin Aktive := True; ...
Delphi-Quellcode:
________________________________________
procedure TForm2.FormActivate(Sender: TObject);
var pfad : String; begin if (aktive) and (ParamCount>0) then begin aktive := False; pfad := Paramstr(1); Gruß Mathias |
Re: Mit Programm öffnen... per doppelklick
Zitat:
|
Re: Mit Programm öffnen... per doppelklick
Vielen Dank...
normalerweise such ich auch erst, bevor ich frage, aber die Frage hat sich grad so ergeben... Schande über mich :wall: ... ich werd nächste Mal zuerst Tante google und onkel delphipraxis.net/search.php benutzen... mfg simon nich wundern, ich schreib das noch bei 3 anderen themen rein^^ |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:53 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 by Thomas Breitkreuz