系统资源调用和shell32.dll简介

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
原文地址:https://www.cnblogs.com/cl1024cl/p/6204928.html