• ベストアンサー

デスクトップ内の特殊フォルダの列挙法について

C# でプログラミングをしているのですが、デスクトップにあるマイコンピュータなどの特殊フォルダにアクセスできません。どうすればアクセスできるのですか? それとも、アプリケーションがフォルダのようなものとして仮想的に扱わなければならないのでしょうか。 ご回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

とりあえず、デスクトップのアイコンの名前でしたら、次のようにすると列挙できます。 参照の追加で、「 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)

回答No.2

一部訂正です。 >プロパティか何かで非表示かどうかを判定できるですが、 は プロパティか何かで非表示かどうかを判定できるハズですが の誤りです。

ike4q
質問者

お礼

素早いご回答、ありがとうございます。 Shell32ですか。 かなり便利なライブラリですね。 今まで使ったことがありませんでした。

関連するQ&A