とりあえず、デスクトップのアイコンの名前でしたら、次のようにすると列挙できます。
参照の追加で、「 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 だと、コントロールパネル → すべてのコントロール パネル項目 → 個人設定 → デスクトップアイコンの変更、で表示されるアイコンが出力されると思います。)
プロパティか何かで非表示かどうかを判定できるですが、私にはわかりませんでした。
お礼
素早いご回答、ありがとうございます。 Shell32ですか。 かなり便利なライブラリですね。 今まで使ったことがありませんでした。