shell32.dll是Windows壳Shell相关应用程序接口动态链接库文件,用于打开网页和文件。一个直观的应用,新建一个文件夹-右键-属性-自定义-更改图标,里面默认的就是SystemRoot%/system32/SHELL32.dll这个文件。选择一个图标就可以为这个文件夹创建一个图标了。
xp下它有近8兆,因为里面有很多资源文件,只要用vs的编辑器打开文件,就能看到所有的图标,图片,对话框,鼠标还有字符串资源。通常人们就是通过修改这些资源来改变操作系统的外观资源的,你可以google一下,围绕这个话题,可以玩出很多花样来。
另外他还包含丰富的api函数,主要是系统、资源等交互的调用。比如System.Windows.Forms.FolderBrowserDialog就是调用了shell32.dll的SHGetSpecialFolderLocation函数。
他的api列表在网上也有参考的,比如一个诸多软件都用得windows风格的关于对话框也是通过它来实现的,代码如下:
[DllImport("shell32.dll", EntryPoint = "ShellAbout")]
public static extern int ShellAboutA(int hwnd, string szApp, string
szOtherStuff, int hIcon);
private void button1_Click(object sender, EventArgs e)
{
ShellAboutA(this.Handle.ToInt32(), "每日一帖", "剪刀发布", 0);
}
另一个调用它的方法是通过rundll32.exe来调用,比如cmd命令提示符中输入:rundll32.exe shell32.dll,ShellAboutA jinjazz
还可以可以调用很多类似的系统对话框或者系统命令,包括注销,关机,重启之类的,参考
http://blog.csdn.net/jinjazz/archive/2008/04/17/2302095.aspx (其中Control_RunDLL 函数是相当牛的)。
此外,他还可以作为com来引用,运行下面代码,就知道他的方便了。
Shell32.ShellClass sh = new Shell32.ShellClass();
sh.Explore(@"c:/");
当然你还可以举一反三,比如模拟 "开始菜单-运行" 操作,以前看到过模拟按键的答案,其实用ShellClass就可以解决。
一些比较好的参考资料可以通过网络得到:
http://www.codeproject.com/KB/shell/csdoesshell1.aspx
http://www.codeproject.com/KB/shell/csdoesshell2.aspx
http://www.codeproject.com/KB/shell/csdoesshell3.aspx