Как получить список файлов в корзине с помощью консольного приложения c # - PullRequest
2 голосов
/ 10 июня 2019

Я работаю над домашней работой, чтобы узнать количество файлов в корзине с помощью shell32.dll. Однако я изо всех сил пытаюсь отобразить список файлов в корзине, и ошибка System.InvalidCastException продолжает появляться, когда я пытаюсь использовать оболочку.

У меня есть несколько решений по переполнению стека, и большинство из них использовали shell32.dll, чтобы получить список файлов из корзины. Последний код, который я пробовал, выглядит так:

public static void Main(string[] args)
{
  Shell shell = new Shell();
  Folder folder = shell.NameSpace(0x000a);

  foreach (FolderItem2 item in folder.Items())
    Console.WriteLine("FileName:{0}", item.Name);

  Marshal.FinalReleaseComObject(shell);
  Console.ReadLine();
}

1 Ответ

2 голосов
/ 10 июня 2019

Эта ошибка, скорее всего, связана с тем, что вы пропустили STAThread в методе. Следующий пример - это старый тест, который делает то же самое, что и вы. Если ошибка связана с получением действительного имени, то я заметил, что твое имя отличается от того, как я это делал. Я прошу папку предоставить мне конкретные сведения о ее файле.

using Shell32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace ConsoleApplication1101
{
    class Program
    {
        [STAThread()]
        static void Main(string[] args)
        {
            // create shell
            var shell = new Shell();

            // get recycler folder
            var recyclerFolder = shell.NameSpace(10);

            // for each files
            for (int i = 0; i < recyclerFolder.Items().Count; i++)
            {
                // get the folder item
                var folderItems = recyclerFolder.Items().Item(i);

                // get file name
                var filename = recyclerFolder.GetDetailsOf(folderItems, 0);

                // write file path to console
                Console.WriteLine(filename);
            }
        }
    }
}

Вот справка на GetDetailsOf, если вам нужна какая-либо другая информация о файле

...