スタック オーバーフローでこのコードを見つけ、arraylist ではなく List を返すように変更しました。キーを押すたびに関数が呼び出されます。この関数が正常に呼び出されている間、SelectedItems() は、デスクトップでハイライトされているにもかかわらず、毎回空のように見えます。エクスプローラーウィンドウでも試してみましたが、結果は同じでした。なぜ何も返さないのか誰にも分かりますか? スタックオーバーフローの他の人々は、それを機能させることができるように見えましたが、私の何が問題なのですか?
public List<string> GetShellItems()
{
List<string> selected = new List<string>();
foreach (SHDocVw.InternetExplorer window in new SHDocVw.ShellWindows())
{
filename = Path.GetFileNameWithoutExtension(window.FullName).ToLower();
if (filename.ToLowerInvariant() == "explorer")
{
Shell32.FolderItems items = ((Shell32.IShellFolderViewDual2)window.Document).SelectedItems();
foreach (Shell32.FolderItem item in items)
{
selected.Add(item.Path);
}
}
}
return selected;
}