¿Cómo usar Shell32 dentro de una aplicación C#?
(8)
- Haga clic derecho en su proyecto en el explorador de soluciones.
- Elija "Agregar referencia ..." en el menú desplegable.
- Haga clic en la pestaña "Examinar".
- Navegue hasta el directorio C: / Windows / System32.
- Elija el archivo "shell32.dll". y presione el botón "OK".
Ahora tiene la referencia adecuada para usar Shell32.Shell.
¿Qué debo incluir dentro de una aplicación de C # para hacer que Shell32 funcione?
Editar:
Mi aplicación no puede reconocer shell32. ¿Qué referencias o lib debo incluir? Lo que estoy tratando de hacer es:
Shell32.Shell shell = new Shell32.Shell();
Lo que estoy recibiendo como un error:
Error 1 No se pudo encontrar el tipo o el nombre de espacio de nombres ''Shell32'' (¿falta una directiva de uso o una referencia de ensamblado?)
La clase que se muestra a continuación debería ayudar con algunos de los métodos de shell32 en C #. debe agregar la referencia de "Comando y automatización de Microsoft Shell" con la ventana de referencia haciendo clic derecho en el proyecto.
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;
}
}
}
La referencia al shell32.dll real está en desuso. Obtendrá errores en .NET Framework 4+. El uso de .NET Framework anterior solo para usar shell32.dll limita las capacidades de su programa. En las aplicaciones para Windows 7+ y .NET Framework 4+ siempre debe utilizar el componente .COM en su lugar. Haga clic derecho en el proyecto. Haga clic en Agregar referencia. Haga clic en la pestaña .COM en el diálogo Agregar referencia. Seleccione Microso.ft Shell Controls and Automation. Haga clic en Aceptar
Sé que este hilo es antiguo, pero lo publico para cualquier persona que tenga el mismo problema que yo. La solución anterior no compila bajo windows 8
Shell32.Shell shell = nuevo Shell32.Shell (); <= esto no funciona con Windows 8
Utilice la solución de trabajo a continuación si desea que sus aplicaciones se ejecuten en 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 });
}
Si no necesita el conjunto completo de llamadas a la API, tal vez sea mejor que cree una clase de código auxiliar de importación COM. Mira cómo lo hizo Mike Ward, quien escribió Desk Drive.
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
Solo Add Reference
a Shell32.dll
desde la carpeta Windows/system32
y Shell32.dll
:
Shell32.Shell shell = new Shell32.Shell();
shell.MinimizeAll();
Supongo que está teniendo problemas para que se reconozca alguna llamada, por lo que lo remito a este artículo general: http://www.codeproject.com/KB/shell/csdoesshell1.aspx
Más allá de eso, deberás proporcionar detalles de lo que no funciona para ti.
tal vez esto pueda ayudar
- Clic derecho proyecto
- Haga clic en
Add reference
- Haga clic en la pestaña
.COM
en el diálogoAdd reference
- Seleccione
Microsoft Shell Controls and Automation
- Haga clic en OK
tu shell32
está listo para usar ...