Autor Beitrag
r2d2-aeg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

Win XP, Win Vista, Win 7

BeitragVerfasst: Mi 23.12.09 15:19 
Hi,
ich schreib mit Delphi gerade ein Archivierungs-Programm, dass den Dateityp '.xxx' als Archiv benutzt.

Wie kann ich den Dateityp dem Programm zuorden?

Wie kann ich ein Datei-Symbol festlegen?

Moderiert von user profile iconTino: Titel erweitert.
Moderiert von user profile iconNarses: Topic aus Sonstiges (Delphi) verschoben am Mi 23.12.2009 um 15:32
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 23.12.09 15:38 
Registrier den Dateityp in der Registry. Code dazu solltest du im Forum finden.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Mi 23.12.09 15:40 
Hey,

wenns bloß auf deinem Rechner sein soll, einfach öffnen mit --> dein Programm un dann n Hackn bei immer öfnne mt rein. Symbol kannst du dann in nem beliebeigen Ordner unter Extras --> OrdnerOptionen --> DateiTypey --> XXX ändern.

Wenn den Programm sich selber regestrieren soll, dann geht das so:
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
function 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;

function UnInstallExt(Extension: String): Boolean;
var
  Reg: TRegistry;
  Description: String;
begin
  Result := False;
  if Extension <> '' then
    begin
    if Extension[1] <> '.' then
      Extension := '.' + Extension;
    Reg := TRegistry.Create;
    try
      Reg.RootKey := HKEY_CLASSES_ROOT;
      if Reg.KeyExists(Extension) then
        begin
        Reg.OpenKey(Extension, false);
        Description:=Reg.ReadString('');
        Reg.CloseKey;
        if Reg.KeyExists('\'+Description) then
          Result:=Reg.DeleteKey(Extension) and Reg.DeleteKey('\' + Description);
        end;
    finally
      Reg.Free;
    end;
  end;
end;


MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
r2d2-aeg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

Win XP, Win Vista, Win 7

BeitragVerfasst: Fr 25.12.09 21:38 
Danke für den Code! Funktioniert!
Aber noch eine Frage zu dem Quellcode,
was muss in ParamString und in IconIndex???

Als Parameter soll der Dateipfad der .xxx - Datei übergeben werden.
Und ich hab mir ein Icon erstellt, wie bekomm ich das als Icon für die Datei??
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 25.12.09 21:51 
Binde es als Ressource in dein Programm ein und übergebe den Index der Ressource als Parameter bei der obigen Registrierungsfunktion.
Bergmann89
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1742
Erhaltene Danke: 72

Win7 x64, Ubuntu 11.10
Delphi 7 Personal, Lazarus/FPC 2.2.4, C, C++, C# (Visual Studio 2010), PHP, Java (Netbeans, Eclipse)
BeitragVerfasst: Sa 26.12.09 14:14 
Hey,

der Dateipfad der XXX-Datei wird automatisch mit übergeben. Der ParamString-Parameter is für feste Parameter, die immer gelten gedacht. Bsp.: "-setup" oder sowas. Ich hab '"%1"' als Parameter übergeben, damit wird dann der Dateipafad glaub ich nich mehr zerstückelt, sondern als ganzes übergeben...
Und wie Luckie schon gesagt hat, das Icon hängst du mit in die Exe rein. Wenn zu z.B. Index = 0 übergibst, müsste die XXX-Datei immer das gleiche Icon wie die Exe haben.

MfG Bergmann

_________________
Ich weiß nicht viel, lern aber dafür umso schneller^^
r2d2-aeg Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28

Win XP, Win Vista, Win 7

BeitragVerfasst: So 27.12.09 22:22 
Jetzt bin ich glücklich!!! :D