shell 的显示:
每个folder都有自己独立的显示效果, 一般它是显示一个listview,在这个view里面会显示它包含的子目录和文件。
每个file也有自己的显示效果,一般如果没有特殊定义,它一般都会根据file class来决定它的显示,这个class会被注册都注册表中,它会定义file在文件夹中或是右键点击出现的context menu时候的显示
效果,当然你可以通过定义shell extenstion来改变它,
很明显,自定义上面的view就是一种典型的shell hook, 它可以帮助你安全的进入到别的进程空间中,并访问进程空间的数据。 但它往往不那么灵活和安全, 如果必要推荐使用BHO来实现这种定制。
一般来说,shell都是由一个shelldll_defview 来显示的, 它下面会有一个或是多个listview 来帮助完成显示工作, 但情况也有例外,那就是active desktop. 在这个模式下面, shell不是
直接由listview显示,shelldll_defview下面是一个webbrowser控件,而这个控件下的显示是由一个html模板来定义的,这样讲复杂的绘制工作交给了html和webbrowser, 不仅使得工作更容易,
而且使得显示效果更加灵活,因为浏览器是由脚本功能的。
每个folder都有自己独立的显示效果, 一般它是显示一个listview,在这个view里面会显示它包含的子目录和文件。
每个file也有自己的显示效果,一般如果没有特殊定义,它一般都会根据file class来决定它的显示,这个class会被注册都注册表中,它会定义file在文件夹中或是右键点击出现的context menu时候的显示
效果,当然你可以通过定义shell extenstion来改变它,
很明显,自定义上面的view就是一种典型的shell hook, 它可以帮助你安全的进入到别的进程空间中,并访问进程空间的数据。 但它往往不那么灵活和安全, 如果必要推荐使用BHO来实现这种定制。
一般来说,shell都是由一个shelldll_defview 来显示的, 它下面会有一个或是多个listview 来帮助完成显示工作, 但情况也有例外,那就是active desktop. 在这个模式下面, shell不是
直接由listview显示,shelldll_defview下面是一个webbrowser控件,而这个控件下的显示是由一个html模板来定义的,这样讲复杂的绘制工作交给了html和webbrowser, 不仅使得工作更容易,
而且使得显示效果更加灵活,因为浏览器是由脚本功能的。