C++ でカスタム拡張機能を作成するにはどうすればよいですか? C# でかなり簡単に実現できることはわかっていますが、C++ でこのようなことが行われるのはまだ見たことがありません。
つまり、.xyz ファイルと .xyz ファイルを読み取るプログラムがある場合、Windows がそれらを自動的に開くようにするにはどうすればよいでしょうか?
C++ でカスタム拡張機能を作成するにはどうすればよいですか? C# でかなり簡単に実現できることはわかっていますが、C++ でこのようなことが行われるのはまだ見たことがありません。
つまり、.xyz ファイルと .xyz ファイルを読み取るプログラムがある場合、Windows がそれらを自動的に開くようにするにはどうすればよいでしょうか?
http://msdn.microsoft.com/en-us/library/windows/desktop/ff513920(v=vs.85).aspxをご覧ください。Windows について知りたいのは明らかなので、OS ごとに異なるという事実はあまり重要ではありません。
これにはいくつかの部分があります。最初に、いくつかの特定の COM インターフェイスを実装するコードを記述する必要があります。次に、作成したコードの場所を Windows に知らせるエントリをレジストリに配置します。必要に応じて、アプリを起動してファイルを開くだけの場合もありますが、Windows エクスプローラーがタイル ビューで表示するサムネイルも含まれる場合があります (Word のドキュメントと .txt ファイルはすべて同じように見えますが、jpg には次のようなサムネイルがあります)。ミニ画像)、Windows エクスプローラーが横に表示できるプレビュー、カスタム プロパティなど。これらはすべて、実装する COM インターフェイスを介した、シェルとアプリケーション間の対話を伴います。また、シェルは、ユーザーが記述したことをレジストリで確認するため、呼び出します。
Windows では、assoc
コマンド ライン ユーティリティ ( http://msdn.microsoft.com/en-us/library/bb490865.aspxを参照) を使用するか、レジストリで直接アクションを実行できます (例: http://msdnを参照)。 .microsoft.com/en-us/library/bb776871.aspx )。
すべてのファイル タイプの Linux システムでは、MIME タイプを登録してから、その MIME タイプのハンドラを登録する必要があります。包括的な概要については、http://library.gnome.org/admin/system-admin-guide/stable/mimetypes-0.html.enを参照してください。
私は Mac OS について十分な知識を持っているわけではありません。
編集: Mac OS での動作を思い出しました: アプリケーション バンドル (*.app/
ディレクトリ) で、プロパティ リストの仕様Contents/Info.plist
に従って内容を含むという名前のファイルを作成し、要素のエントリを作成します。CFBundleDocumentTypes
簡単に言えば、一般的にはできないということです。最初の問題は、これをどのように処理するかはオペレーティングシステムに依存することです。そして、そこにさえ、ほとんどの場合、誰がどのファイルを開くかを決定するのはプログラムではなく、OSです。そして、あなたのOSは、あなたが特定のプログラムを持っているかどうかを知る必要はありません。あなたができることは、ある種のインストールプログラムのOSに、プログラムを使用して特定のファイルを開くようにアドバイスすることだけです。私はウィンドウを使用していませんが、おそらくそれはいくつかのレジストリエントリを追加することを意味します。