Auslesen, welchr datei type mit welchem programm gestartet w
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
Auslesen, welchr datei type mit welchem programm gestartet w
Hallo,
Ich möchte gerne unter Gnome und unter KDE auslesen, welches Programm zum öffnen von welchen Dateitypen zuständig ist. so wie unter nautilus.
Am besten so, das man auch die liste mit den öffnen mit möglichkeiten kriegt.
Ich möchte gerne unter Gnome und unter KDE auslesen, welches Programm zum öffnen von welchen Dateitypen zuständig ist. so wie unter nautilus.
Am besten so, das man auch die liste mit den öffnen mit möglichkeiten kriegt.
Re: Auslesen, welchr datei type mit welchem programm gestart
Schön!
Find ich gut, dass das mal einer macht.
Viel Glück!
Find ich gut, dass das mal einer macht.
Viel Glück!
Achso. Schade eigentlich. 
Das Problem beginnt damit, dass man unter Linux eigentlich erstmal gar nicht wissen kann, welchen Dateityp man vorliegen hat.
Die Dateinamenserweiterung ist nämlich nicht vorgeschrieben.
Das kannste gerne mal ausprobieren. Entferne einfach z.B. in Konqueror die Erweiterung : test.png -> test
Konqueror zeigt dir trotzdem das PNG an.
Das ist in OpBitmap z.B. auch partiell umgesetzt.
Dort ist der releveante Teil der Mime Datenbank
http://www.freedesktop.org/wiki/Specifi ... -info-spec" onclick="window.open(this.href);return false;
im der Datei mimexml.pas drin und wird standardmässig mit opbitmapformats.pas in die Anwendung kompiliert.
in der Mime-Datenbank findet man mehr oder weniger komplizierte regeln, wie die Datei durch ihren Header zu bestimmen ist (Siehe tag )
Mir ist gerade aufgefallen, dass ich das in opbitmapformats nicht durchgezogen habe. Hier also der "Patch" (Siehe //NEU), wie opbitmapformats auch Dateien ohne Erweiterung öffnen kann.
opbitmapformats.pas Zeile: 264
Für das finden der mit dem Mime-Typen verknüpften Programme unter versch. DE ist mir nichts pfannenfertiges bekannt.
Vielleicht weiss Christian was. Er hat mal in Utils.pas mit gconftool-2 was gemacht.
Ansonsten Docs lesen und sich durch die Dateien hangeln. Es ist alles da, man muss nur wissen wie man's ausliest
Ich fänd's schön, wenn du das allgemein lösen könntest. Mindestens für Gnome/KDE.

Das Problem beginnt damit, dass man unter Linux eigentlich erstmal gar nicht wissen kann, welchen Dateityp man vorliegen hat.
Die Dateinamenserweiterung ist nämlich nicht vorgeschrieben.
Das kannste gerne mal ausprobieren. Entferne einfach z.B. in Konqueror die Erweiterung : test.png -> test
Konqueror zeigt dir trotzdem das PNG an.
Das ist in OpBitmap z.B. auch partiell umgesetzt.
Dort ist der releveante Teil der Mime Datenbank
http://www.freedesktop.org/wiki/Specifi ... -info-spec" onclick="window.open(this.href);return false;
im der Datei mimexml.pas drin und wird standardmässig mit opbitmapformats.pas in die Anwendung kompiliert.
in der Mime-Datenbank findet man mehr oder weniger komplizierte regeln, wie die Datei durch ihren Header zu bestimmen ist (Siehe tag )
Mir ist gerade aufgefallen, dass ich das in opbitmapformats nicht durchgezogen habe. Hier also der "Patch" (Siehe //NEU), wie opbitmapformats auch Dateien ohne Erweiterung öffnen kann.
opbitmapformats.pas Zeile: 264
Code: Alles auswählen
procedure TOPPicture.LoadFromFile(const FileName: string);
var cls: TOpBmpClass;
fs:TFileStream;
begin
cls := GetClassFromMimeFile(FileName);
//NEU
if cls=nil then
begin
fs:=TFileStream.Create(FileName,fmOpenRead);
cls:=GetClassFromMimeStream(fs);
fs.free;
end;
//END NEU
if cls <> nil then
begin
if fCurrentFormat <> nil then FreeAndNil(fCurrentFormat);
fCurrentFormat := cls.create;
if Assigned(fOnProgress) then fCurrentFormat.OnOPProgress := fOnProgress;
(fCurrentFormat as cls).LoadFromFile(FileName);
fMimeType := fLastMime;
end else raise EPasBitMapError.Create('File Format not supported');
end;
Vielleicht weiss Christian was. Er hat mal in Utils.pas mit gconftool-2 was gemacht.
Ansonsten Docs lesen und sich durch die Dateien hangeln. Es ist alles da, man muss nur wissen wie man's ausliest

Ich fänd's schön, wenn du das allgemein lösen könntest. Mindestens für Gnome/KDE.
-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
http://cweiske.de/howto/launch/allinone.html" onclick="window.open(this.href);return false;
Immer schön den Ball flach haltenChristian hat geschrieben:In meiner Utils Unit gibts das schon lang alles fix und fertig und Plattformunabhängig. Man müsste halt nur mal reinschaun.

Deine Lösung ist ein Anfang. Aber so richtig Plattformunabhängig ist das nicht.
Die Pfade, die du in GetProcessforExtension auslesen willst:
/usr/share/application-registry/
/usr/share/mime-info/
existieren auf meinem Suse KDE noch nicht mal.
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
ich habe sie gerade unter debian gefunden 
/etc/gnome-vfs-2.0/defaults.list
@Cristian: Unter welcher Lizenz steht deine Utils.pas eigentlich? kann ich die für ein gpl programm nutzen?
PS: Mann kann auch einfach gnome-open benutzen
Danke für eure Hilfe

/etc/gnome-vfs-2.0/defaults.list
@Cristian: Unter welcher Lizenz steht deine Utils.pas eigentlich? kann ich die für ein gpl programm nutzen?
PS: Mann kann auch einfach gnome-open benutzen

Danke für eure Hilfe

Zuletzt geändert von hanibal am So 3. Feb 2008, 12:35, insgesamt 3-mal geändert.
-
- Beiträge: 369
- Registriert: Sa 3. Mär 2007, 16:03
- OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
- CPU-Target: xxBit
- Wohnort: Bramsche (Emsland)
Ja, aber fürn anfang reicht es ja.
Das programm was ich schreeiben will soll sowieso ein Pluginsystem bekommen, dann kann man später einfach ein Suse Plugin schreiben, bzw ein KDE Plugin. Wobei ich das Programm eigentlich sowieso nur für Gnome Schreiben will, aber mal schauen, mit Lazarus ist es ja relativ einfach aus einem GTK+ Programm ein QT Programm zu machen
Das programm was ich schreeiben will soll sowieso ein Pluginsystem bekommen, dann kann man später einfach ein Suse Plugin schreiben, bzw ein KDE Plugin. Wobei ich das Programm eigentlich sowieso nur für Gnome Schreiben will, aber mal schauen, mit Lazarus ist es ja relativ einfach aus einem GTK+ Programm ein QT Programm zu machen

-
- Beiträge: 958
- Registriert: Mo 11. Sep 2006, 22:56
KDE regelt das intern so:
http://developer.kde.org/documentation/ ... /mime.html" onclick="window.open(this.href);return false;
muss ich mir mal näher betrachten
kfmclient exec,
gnome-open,
exo-open oder
xdg-open
sind natürlich Alternativen,bieten aber keine
Auswahl an sondern starten direkt.
http://developer.kde.org/documentation/ ... /mime.html" onclick="window.open(this.href);return false;
muss ich mir mal näher betrachten
kfmclient exec,
gnome-open,
exo-open oder
xdg-open
sind natürlich Alternativen,bieten aber keine
Auswahl an sondern starten direkt.