如何在C#应用程序中使用Shell32?

时间:2011-04-18 20:21:45

标签: c# shell32

为了使Shell32有效,我应该在C#应用程序中包含哪些内容?

修改

我的应用程序无法识别shell32。我应该包括哪些参考或库?我想做的是:

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

我得到的是一个错误:

  

错误1找不到类型或命名空间名称'Shell32'(您是否缺少using指令或程序集引用?)

9 个答案:

答案 0 :(得分:48)

只需Add ReferenceShell32.dll形成Windows/system32文件夹并使用它:

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

答案 1 :(得分:46)

也许这可以提供帮助:

  1. 右键单击项目
  2. 点击Add reference
  3. 点击.COM对话
  4. 中的Add reference标签
  5. 选择Microsoft Shell Controls and Automation
  6. 点击确定
  7. 您的shell32已准备就绪......

答案 2 :(得分:26)

我知道这个帖子已经老了,但是我发布这个帖子给任何有同样问题的人。上面的解决方案不能在Windows 8下编译

Shell32.Shell shell = new Shell32.Shell(); < =这不适用于Windows 8

如果您希望应用在Windows 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 });
}

答案 3 :(得分:6)

  1. 在解决方案资源管理器中右键单击您的项目。
  2. 从下拉菜单中选择“添加参考...”。
  3. 点击“浏览”标签。
  4. 导航到C:\ Windows \ System32目录。
  5. 选择“shell32.dll”文件。然后按“确定”按钮。
  6. 您现在拥有使用Shell32.Shell的适当参考。

答案 4 :(得分:2)

我猜你在接受任何来电时都遇到了问题,所以我建议你参考这篇文章:http://www.codeproject.com/KB/shell/csdoesshell1.aspx

除此之外,您还需要提供不适合您的具体信息。

答案 5 :(得分:2)

下面显示的类应该有助于C#中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;
            }


        }
    }

答案 6 :(得分:1)

如果您不需要完整的API调用集,最好创建一个COM导入存根类。看看编写Desk Drive的Mike Ward是如何做到的。

http://mike-ward.net/2008/09/02/a-lean-method-for-invoking-com-in-c/ https://github.com/mike-ward/DeskDrive/blob/master/src/DeskDrive/Shell32.cs

答案 7 :(得分:0)

已弃用引用实际的shell32.dll。 .NET Framework 4+中会出现错误。仅使用旧的.NET Framework来使用shell32.dll限制了程序的功能。 在Windows 7+和.NET Framework 4+的应用程序中,应始终使用.COM组件。     右键单击项目。     单击添加引用。     单击“添加引用”对话框中的“ .COM”选项卡。     选择“ Microso.ft Shell控件和自动化”。     点击确定

答案 8 :(得分:0)

将对COM库 Microsoft Shell Controls and Automation 的引用添加到您的项目中。此外,请确保使用Shell32.Shell的代码在单个线程单元中运行,例如通过将[STAThread]属性添加到Main