| Autor |
Beitrag |
r2d2-aeg
      
Beiträge: 28
Win XP, Win Vista, Win 7
|
Verfasst: 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 Tino: Titel erweitert.Moderiert von Narses: Topic aus Sonstiges (Delphi) verschoben am Mi 23.12.2009 um 15:32
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 23.12.09 15:38
Registrier den Dateityp in der Registry. Code dazu solltest du im Forum finden.
|
|
Bergmann89
      
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)
|
Verfasst: 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:
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 
      
Beiträge: 28
Win XP, Win Vista, Win 7
|
Verfasst: 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
|
Verfasst: 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
      
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)
|
Verfasst: 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 
      
Beiträge: 28
Win XP, Win Vista, Win 7
|
Verfasst: So 27.12.09 22:22
Jetzt bin ich glücklich!!! 
|
|
|