C# アプリでカスタム ファイル拡張子を作成する方法についてサポートが必要です。基本的なメモ管理アプリを作成しました。現在、メモを .rtf (note1.rtf) として保存しています。自分のアプリだけが理解できるファイル拡張子を作成できるようにしたい (note.not など)
5 に答える
展開ポイントとして、ClickOnceはファイル拡張子をサポートしていることに注意してください(「オンラインのみ」モードでない限り)。これにより、新しいファイル拡張子を認識するようにシステムを簡単に構成できます。
これは、プロジェクトのプロパティ->公開->オプション->VS2008のファイルの関連付けにあります。VS2008をお持ちでない場合は、手動で行うこともできますが、面白くありません。
ファイル拡張子は、フォーマットの任意の選択であり、インストール時に特定のファイル拡張子を特定の種類のファイルとして Windows に登録するアプリケーションにのみ依存します。
通常、独自のファイル形式を考え出すということは、アプリケーションだけが解析できる形式を使用してその形式を保存することを意味します。プレーン テキストでもバイナリでもかまいません。また、XML などの形式を使用することもできます。要点は、アプリで簡単に解析できる必要があるということです。
あなたの質問には2つの解釈があります。
ドキュメントのファイル形式はどうあるべきですか?
現在、メモをRTF形式で保存しています。保存するファイル名拡張子に関係なく、RTF形式を理解しているアプリケーションは、RTF形式であることをユーザーが認識し、そのファイルをそのファイルにポイントしている限り、メモを開くことができます。
ドキュメントをカスタムファイル形式で保存して、他のアプリケーションが読み取れないようにする場合。リッチエディットコントロールによって生成されたRTFストリーム(アプリでエディターとして使用しているものだと思います)を取得し、独自の形式を使用してバイナリストリームにシリアル化するコードを考え出す必要があります。
私は個人的にこれを努力する価値があるとは思わないでしょう...
マイドキュメントのファイル名拡張子は何ですか
現在、.rtfファイル名拡張子を付けたRTF形式でドキュメントを保存しています。他のアプリケーションはそのファイル拡張子に関連付けられているため、Windowsエクスプローラーでそのようなファイルをダブルクリックすると、の代わりにそのアプリケーションが開きます。
Windowsエクスプローラーでファイルをダブルクリックしてアプリを開くことができるようにするには、使用しているファイル名拡張子を変更し、その拡張子に適切な関連付けを作成する必要があります。
ファイル拡張子の関連付けは、レジストリのエントリによって定義されます。これらのマシンごと(HKLM \ Software \ Classes内)またはユーザーごと(HKCU \ Software \ Classes内)を作成できますが、マシンごとが最も一般的なケースです。実際のレジストリエントリとMSDNドキュメントおよびサンプルへのリンクの詳細については、Vistaドキュメントアイコンの関連付けに関するこのSOの質問に対する私の回答を確認してください。
正しいレジストリ値を作成することが問題だと思いますが、
または、このコードプロジェクトの記事を確認してください
ファイルを保存するときにファイル名に入れるだけで、好きな拡張子でファイルを保存できます。
あなたの問題は「RTF以外でファイルを保存するにはどうすればよいですか?」ということだと思います。独自のフォーマットを発明する必要がありますが、実際にはそれは望ましくありません。RTF を mynote.not という名前のファイルに保存することもできます。
他のプログラムから読み取り可能な形式を使用し続けることをお勧めします。プログラムでサポートされていないメモで何かをしたいと思ったら、ユーザーは感謝するでしょう。