- ベストアンサー
デスクトップ内の特殊フォルダの列挙法について
C# でプログラミングをしているのですが、デスクトップにあるマイコンピュータなどの特殊フォルダにアクセスできません。どうすればアクセスできるのですか? それとも、アプリケーションがフォルダのようなものとして仮想的に扱わなければならないのでしょうか。 ご回答よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、デスクトップのアイコンの名前でしたら、次のようにすると列挙できます。 参照の追加で、「 COM 」タブの 「 Microsoft Shell Controls And Automation 」を追加しておいて、 using System; using System.Drawing; using System.Windows.Forms; using Shell32; namespace EnumDesktopIcon { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Shell s = new Shell(); Folder desktop = s.NameSpace(0); FolderItems fis = desktop.Items(); foreach (FolderItem fi in fis) { this.textBox1.AppendText(fi.Name + "\r\n"); } } } } のようにします。 ただし、このままだと非表示のものまで出力されてしまいます。 ( XP だと、コントロールパネル → 画面 → デスクトップ → デスクトップのカスタマイズ Windows7 だと、コントロールパネル → すべてのコントロール パネル項目 → 個人設定 → デスクトップアイコンの変更、で表示されるアイコンが出力されると思います。) プロパティか何かで非表示かどうかを判定できるですが、私にはわかりませんでした。
その他の回答 (1)
- tsukasa-12r
- ベストアンサー率65% (358/549)
一部訂正です。 >プロパティか何かで非表示かどうかを判定できるですが、 は プロパティか何かで非表示かどうかを判定できるハズですが の誤りです。
お礼
素早いご回答、ありがとうございます。 Shell32ですか。 かなり便利なライブラリですね。 今まで使ったことがありませんでした。