调用windows操作系统的上下文菜单功能

     操作系统里面有很多组件,可以调用这些组件的功能把系统的功能集成到我们的软件中来,利用组件可以完成很多我们无法想像的事情。
    今天在做个东西的时候,偶然间发现操作系统有一个组件——shell32.dll,在c盘程序文件system32文件下(可以搜索到),该组件封装了计算机上很多的文件夹、文件的索引,具体有哪些,我也没有仔细的测试,因为实在太多了。不仅如此,主要的是可以利用这个组件调用这些文件夹、文件的上下文菜单的菜单项。所以,操作系统里面很多文件、文件夹的菜单功能都可以利用该组件在我们程序里面调用。
    我做了一个测试,我在桌面上放了一个“新建文件.txt”文件,右击该文件,菜单里面有:打开、编辑、删除、压缩、病毒扫描、属性等等,可以调用这些功能。
   具体方法是:把shell32.dll添加到项目中来,然后定义该组件的shell类的对象,然后调用该对象的函数就可以,例如下面的代码实现把桌面上的“新建文件.txt”文件打开和病毒扫描(我安装了卡巴斯基)。
            Shell32.Shell sh = new Shell32.Shell();          
            Shell32.Folder sf = sh.NameSpace(0);
            Shell32.FolderItems fis = sf.Items();
            string itemName = fis.Item(11).Name.ToString();
            Shell32.FolderItemVerbs fivs= fis.Item(11).Verbs();
            foreach (Shell32.FolderItemVerb fv in fivs)
            {
                string name= fv.Name.ToString();
                if (name == "打开(&O)")
                {
                    fv.DoIt();
                 }
                if (name == "扫描病毒(&K)")
                {
                    fv.DoIt();
                   // break;
                }
            }
     很easy吧,没有几行代码,呵呵...
     不过,任何事情都不是100%好的,调用组件的弊端很大,不在万不得已的情况下我是不会使用组件的 。比如,组件对系统依赖很大,换个版本的系统就可能执行不了,我上面的代码可能在你的机器上就执行不了或者实现不了功能,可别说我写的代码不对哟。

你可能感兴趣的:(windows)