Как использовать Shell32 в приложении С#?

Что мне следует включить в приложение С#, чтобы заставить Shell32 работать?

Edit:

Мое приложение не может распознать shell32. Какие ссылки или lib я должен включить? Я пытаюсь сделать это:

Shell32.Shell shell = new Shell32.Shell(); 

Что я получаю как ошибку:

Ошибка 1 Не удалось найти имя типа или пространства имен "Shell32" (вам не хватает директивы using или ссылки на сборку?)

Ответ 1

Просто добавьте ссылку на Shell32.dll из папки Windows\System32 и используйте ее:

Shell32.Shell shell = new Shell32.Shell();
shell.MinimizeAll();

Ответ 2

возможно, это может помочь:

  • Щелкните правой кнопкой мыши проект
  • Нажмите Add reference
  • Перейдите на вкладку .COM в диалоге Add reference
  • Выберите Microsoft Shell Controls and Automation
  • Нажмите OK

ваш shell32 готов к использованию...

Ответ 3

Я знаю, что эта ветка устарела, но я публикую ее для тех, кто имеет ту же проблему, что и я. Решение выше не компилируется под окнами 8

Shell32.Shell shell = новый Shell32.Shell(); <= это не работает с окнами 8

Используйте работу ниже, если вы хотите, чтобы ваши приложения запускались под окнами 8.

using Shell32;

private Shell32.Folder GetShell32Folder(string folderPath)
{
    Type shellAppType = Type.GetTypeFromProgID("Shell.Application");
    Object shell = Activator.CreateInstance(shellAppType);
    return (Shell32.Folder)shellAppType.InvokeMember("NameSpace",
    System.Reflection.BindingFlags.InvokeMethod, null, shell, new object[] { folderPath });
}

Ответ 4

  • Щелкните правой кнопкой мыши ваш проект в проводнике решений.
  • Выберите "Добавить ссылку..." в раскрывающемся меню.
  • Перейдите на вкладку "Обзор".
  • Перейдите в каталог C:\Windows\System32.
  • Выберите файл "shell32.dll". и нажмите кнопку "ОК".

Теперь у вас есть соответствующая ссылка для использования Shell32.Shell.

Ответ 5

Я предполагаю, что у вас возникли проблемы с распознаванием любых вызовов, поэтому я приведу вас к этой общей статье: http://www.codeproject.com/KB/shell/csdoesshell1.aspx

Кроме того, вам нужно будет указать особенности того, что не работает для вас.

Ответ 6

Класс, показанный ниже, должен помочь с некоторыми из методов shell32 в С#. вы должны добавить ссылку "Командная и автоматическая оболочка Microsoft Shell" со ​​ссылкой, щелкнув по проекту.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

    namespace MusicMuttPrototype
    {
        public class clsShellFileInfo
        {
            public Exception errorException;
            public enum FileDetailInfo
            {
                Name = 0,
                Year = 15,
                Size = 1,
                Track_Number = 19,
                Type = 2,
                Genre = 20,
                Date_Modified = 3,
                Duration = 27,
                Date_Created = 4,
                Bit_Rate = 28,
                Date_Accessed = 5,
                Protected = 23,
                Attributes = 6,
                Camera_Model = 24,
                Status = 7,
                Date_Picture_Taken = 25,
                Owner = 8,
                Dimensions = 26,
                Author = 9,
                Not_used = 27,
                Title = 10,
                Not_used_file = 28,
                Subject = 11,
                //Not_used = 29,
                Category = 12,
                Company = 30,
                Pages = 13,
                Description = 31,
                Comments = 14,
                File_Version = 32,
                Copyright = 15,
                Product_Name_Chapter = 33,
                //Scripting Quicktest Profess11ional Page 63 
                Artist = 16,
                Product_Version = 34,
                Album_Title = 17,
                Retrieves_the_info_tip_inf = -1
            }

            public string getFileDetails(string fileFolder, string filePath, FileDetailInfo infotype)
            {
                string strReturnval = "";
                try
                {
                    Shell32.Shell fileshell = new Shell32.Shell();
                    Shell32.Folder fileshellfolder = fileshell.NameSpace(fileFolder);
                    Shell32.FolderItem Item = fileshellfolder.ParseName(filePath);
                    strReturnval = fileshellfolder.GetDetailsOf(Item, (int)infotype);
                }
                catch (Exception ex)
                {

                    errorException = ex;
                }
                return strReturnval;
            }


        }
    }

Ответ 8

Ссылка на фактическую shell32.dll устарела. Вы получите ошибки в .NET Framework 4+. Использование более старого .NET Framework только для использования shell32.dll ограничивает возможности вашей программы. В приложениях для Windows 7+ и .NET Framework 4+ вы всегда должны использовать вместо этого компонент .COM. Щелкните правой кнопкой мыши проект. Нажмите Добавить ссылку. Нажмите вкладку .COM в диалоговом окне Добавить ссылку. Выберите Microso.ft Shell Controls and Automation. Нажмите ОК

Ответ 9

Добавьте в свой проект ссылку на COM-библиотеку Microsoft Shell Controls and Automation. Кроме того, убедитесь, что код, использующий Shell32.Shell, выполняется в однопоточном апартаменте, например, добавив [STAThread] в Main.