none
"datafile1"のアイコンに絵をつけることは可能ですか? RRS feed

  • 質問

  • 以下のコードで"datafile1"を生成しています。このファイルのアイコンに絵をつけることは可能ですか?

    教えてください。よろしくお願いいたします。

    Code Snippet

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
    using System.Runtime.Serialization.Formatters.Binary;

    namespace TestApplication1
    {
        public partial class Form1 : Form
        {
            public Form1()
            {
                InitializeComponent();
            }

            private void Form1_Load(object sender, EventArgs e)
            {

            }
            [System.Serializable]
            class mydata
            {
                public long productkey = 0;
                public int[,] field = new int[1000, 1000];

            }
            mydata data1;
            mydata data2;
            private void button1_Click(object sender, EventArgs e)
            {
                data1=new mydata();
                data2 = new mydata();
                data1.productkey = 3456789;
                data1.field[1, 1] = 7;
                data1.field[999, 999] = 12;
                using (FileStream fs = new FileStream("datafile1", FileMode.Create, FileAccess.Write))
                {

                    BinaryFormatter formatter = new BinaryFormatter();
                    formatter.Serialize(fs, data1);
                }

     

                //デシリアライズ

                using (FileStream fs = new FileStream("datafile1", FileMode.Open, FileAccess.Read))
                {

                    BinaryFormatter formatter = new BinaryFormatter();
                    data2 = (mydata)formatter.Deserialize(fs);
                }

            }
        }

    }

     

     


           
        

    2008年6月2日 7:51

回答

  • アプリケーションではなくて、"datafile1"というファイル自体にアイコンを表示させたいのですよね?

    その前提で書きます。

     

     acslearner さんからの引用

    "datafile1"を生成しています。このファイルのアイコンに絵をつけることは可能ですか?

    無理ではないですが、拡張子のないファイルにアイコンを表示させるのは困難です。

     

    一例として、「テキスト文書」は".txt"という拡張子と呼ばれるものをファイル名に持っています。

    テキスト文書にアイコンがつくのは、この".txt"に対してどのようなアイコンを表示するかといった情報が登録されているためです。

     

    ※拡張子が表示されていない場合 --------------------------

    最近のWindowsのインストール直後では拡張子を表示していません。

    エクスプローラのフォルダオプションから「登録された拡張子を表示しない」のチェックを外すことで拡張子を見ることができます。

    --------------------------------------------------------------------------

     

    さて、問題の"datafile1"ですが、それにアイコンを表示するのはC++でIconHandlerを実装しない限り、無理じゃないかと思います。

     

    次点として考えられる手ですが、独自の拡張子を定義することです。

    例えば、"datafile1.hogehoge"だったとした場合、その".hogehoge"に対してアイコンを割り当てる情報を登録できれば、アイコンが表示されるようになります。

    この拡張子に対して、どのようなアプリケーションで開くか、またどのようなアイコンで表示するかといった情報が「関連付け」と呼ばれるもので、レジストリの編集が必要です。

     

     

    いずれにせよ、言うほど簡単ではないので、本当に必要なのかどうかまず検討して下さい。

    必要なのであれば、関連付けや拡張子について調べて頂き、そのあたりの仕組みを理解して下さい。

    2008年6月2日 14:05
    モデレータ

すべての返信

  • 2008年6月2日 13:58
    モデレータ
  • アプリケーションではなくて、"datafile1"というファイル自体にアイコンを表示させたいのですよね?

    その前提で書きます。

     

     acslearner さんからの引用

    "datafile1"を生成しています。このファイルのアイコンに絵をつけることは可能ですか?

    無理ではないですが、拡張子のないファイルにアイコンを表示させるのは困難です。

     

    一例として、「テキスト文書」は".txt"という拡張子と呼ばれるものをファイル名に持っています。

    テキスト文書にアイコンがつくのは、この".txt"に対してどのようなアイコンを表示するかといった情報が登録されているためです。

     

    ※拡張子が表示されていない場合 --------------------------

    最近のWindowsのインストール直後では拡張子を表示していません。

    エクスプローラのフォルダオプションから「登録された拡張子を表示しない」のチェックを外すことで拡張子を見ることができます。

    --------------------------------------------------------------------------

     

    さて、問題の"datafile1"ですが、それにアイコンを表示するのはC++でIconHandlerを実装しない限り、無理じゃないかと思います。

     

    次点として考えられる手ですが、独自の拡張子を定義することです。

    例えば、"datafile1.hogehoge"だったとした場合、その".hogehoge"に対してアイコンを割り当てる情報を登録できれば、アイコンが表示されるようになります。

    この拡張子に対して、どのようなアプリケーションで開くか、またどのようなアイコンで表示するかといった情報が「関連付け」と呼ばれるもので、レジストリの編集が必要です。

     

     

    いずれにせよ、言うほど簡単ではないので、本当に必要なのかどうかまず検討して下さい。

    必要なのであれば、関連付けや拡張子について調べて頂き、そのあたりの仕組みを理解して下さい。

    2008年6月2日 14:05
    モデレータ
  • こんにちは! 中川俊輔 です。

     

    Azuleanさん、回答ありがとうございます。


    acslearnerさん、フォーラムのご利用ありがとうございます。

    問題は解決しましたでしょうか?

    有用な情報と思われたため、Azuleanさんの回答へ回答済みチェックをつけさせていただきました。

     

    回答済みチェックが付くことにより、有用な情報を探している方が情報を見つけやすくなります。
    有用な情報と思われる回答があった場合は、なるべく回答済みボタンを押してチェックを付けてください。

    acslearnerさんはチェックを解除することもできますので、ご確認ください。

     

    それでは!

     

    2008年6月27日 5:21