2012-04-15 12 views
0

Wie ist es möglich, eine benutzerdefinierte Erweiterung in C++ zu erstellen? Ich weiß, dass es in C# ziemlich leicht erreicht werden kann, aber ich habe noch so etwas in C++ gesehen.Benutzerdefinierte Dateierweiterung in C++

Nun, was ich meine ist etwas wie, wie ich etwas schreiben kann, so dass, wenn ich eine Datei .xyz und ein Programm, das .xyz-Dateien zu lesen, Windows öffnet sie automatisch?

+0

Uuh, du meinst etwas name.xyz benennen und es dann als dein eigenes Format darstellen :)? – ScarletAmaranth

+1

Es gibt einige Dinge, die ich denken kann, die Sie vielleicht meinen, aber die Antwort auf alle von ihnen ist: genauso wie in C#. Kannst du ein bisschen mehr angeben? –

Antwort

3

Werfen Sie einen Blick auf http://msdn.microsoft.com/en-us/library/windows/desktop/ff513920(v=vs.85).aspx. Sie möchten Windows unbedingt kennenlernen, daher spielt es keine Rolle, dass es für jedes Betriebssystem anders ist.

Es gibt mehrere Teile dazu. Zuerst müssen Sie Code schreiben, der bestimmte COM-Schnittstellen implementiert. Dann fügen Sie Einträge in die Registrierung ein, die Windows mitteilen, wo Sie den Code finden, den Sie geschrieben haben. Abhängig von Ihren Bedürfnissen könnte das nur sein, Ihre App zu starten und die Datei zu öffnen, aber es könnte auch die Miniaturansicht enthalten, die Windows Explorer in der Kachelansicht anzeigt (Word-Dokumente und .TXT-Dateien sehen alle gleich aus, aber JPGs haben eine Miniaturansicht.) das Mini-Bild), die Vorschau, die der Windows Explorer auf der Seite zeigen kann, benutzerdefinierte Eigenschaften und so weiter. All dies beinhaltet eine Interaktion zwischen der Shell und Ihrer Anwendung über COM-Schnittstellen, die Sie implementieren, und die von der Shell aufgerufen werden, da sie in der Registrierung angezeigt wird, in der Sie sie geschrieben haben.

+0

Ok, danke für die Info. – MKII

1

Die kurze Antwort ist, dass Sie im Allgemeinen nicht tun können. Das erste Problem ist, dass es vom Betriebssystem abhängt, wie es damit umgehen soll. Und selbst dort entscheidet meist nicht das Programm, wer die Datei öffnet, sondern das Betriebssystem. Und Ihr Betriebssystem weiß einfach nicht, ob Sie ein bestimmtes Programm haben oder nicht. Alles, was Sie tun können, ist, das Betriebssystem in irgendeiner Art von Installationsprozess zu beraten, dass es Ihr Programm benutzen sollte, um bestimmte Dateien zu öffnen. Ich benutze keine Windows, aber wahrscheinlich bedeutet das Hinzufügen von Registrierungseinträgen.

2

Unter Windows können Sie entweder über das Befehlszeilenprogramm assoc (siehe http://msdn.microsoft.com/en-us/library/bb490865.aspx) oder führen Sie die Aktion direkt in der Registrierung (siehe z. B. http://msdn.microsoft.com/en-us/library/bb776871.aspx).

Auf Linux-Systemen für jeden Dateityp müssen Sie seinen MIME-Typ registrieren und dann einen Handler für diesen MIME-Typ registrieren. Einen umfassenden Überblick finden Sie unter http://library.gnome.org/admin/system-admin-guide/stable/mimetypes-0.html.en.

Ich weiß nicht genug über Mac OS, um mit dieser eine Hilfe zu sein, ich muss zugeben.

edit: I Just erinnerte sich, wie es auf Mac OS funktioniert: In Ihrem Anwendungspaket (*.app/ Verzeichnis), erstellen Sie eine Datei Contents/Info.plist mit Inhalt nach dem property-list specification und erstellen Sie die Einträge für das CFBundleDocumentTypes Element genannt.