Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Mit Programm öffnen... per doppelklick (https://www.delphipraxis.net/150997-mit-programm-oeffnen-per-doppelklick.html)

SimonRap 2. Mai 2010 21:32


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

Fussball-Robby 2. Mai 2010 21:58

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ß

SimonRap 3. Mai 2010 17:56

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

lbccaleb 3. Mai 2010 17:58

Re: Mit Programm öffnen... per doppelklick
 
Schau mal hier

SimonRap 3. Mai 2010 18:11

Re: Mit Programm öffnen... per doppelklick
 
jo thx das hab ich gesucht, aber ne fehlermeldung:
er kennt kein TRegistryhttp://simonrap.square7.ch/bla/simon.JPG
weiß jemand warum`?
mfg simon

wicht 3. Mai 2010 18:14

Re: Mit Programm öffnen... per doppelklick
 
Du musst "Registry" in die "uses"-Klausel mit aufnehmen.

SimonRap 3. Mai 2010 18:19

Re: Mit Programm öffnen... per doppelklick
 
ok also hab jetzt:
Delphi-Quellcode:
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;
an sich schön und gut... aber er macht nix... als rückgabewert kommt false... warum das?

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]

wicht 3. Mai 2010 18:23

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:
    if Extension[1] ='.' then
      Extension := '.' + Extension;
Sollte es nicht <> anstatt = heißen im if?

Und warum
Delphi-Quellcode:
  if Extension='' then
  begin
Soll die Erweiterung nur registriert werden, wenn keine angegeben wurde?

-Phantom- 3. Mai 2010 18:40

Re: Mit Programm öffnen... per doppelklick
 
Mir hat das hier schon gereicht
Delphi-Quellcode:
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;
Ist für mein Entpacker.

SimonRap 3. Mai 2010 18:45

Re: Mit Programm öffnen... per doppelklick
 
jo danke leute^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 Uhr.
Seite 1 von 2  1 2      

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