用VC++ 进行Windows Shell 扩展编成
由ccc编译
序言:
看过一些对windows 外壳的扩展程序,在使用上一般都是直接利用windows的外壳API做一些工作,因为外壳操作需要一些比较专业的知识,因此,大部分编程人员特别是使用集成编程环境的程序人员对windows shell的扩展编程不很了解,也缺乏这方面的资料。
在做过一些程序之后,感觉到使用windows shell的扩展编程可以使程序与操作系统的结合更加紧密,就好像应用程序已经融入到操作系统之中一样。在使用windows shell扩张编程工具的过程中深切体会到windows shell技术资料的重要性,为此,根据
Dino Esposito的《Visual C++ Windows Shell Programming》为蓝本,编译形成以下文字,为希望使用windows shell编程的人员提供一点帮助。
编译过程可能会出现错误,希望朋友们指正,请Email联系:
ch2zh1@tom.com。本人将不胜感激。
引言
欢迎阅读
CV++ Windows Shell
编程,在这本书中,你将学到怎样扩展
Windows Shell
,客户化它的行为和继承应用到
Windows Shell
中。你还将发现怎样使用和修改它的属性以达到最好的效能,以及调用那些资料欠缺的
Shell API
函数的方法。对
Shell
编程并不困难,但是很少有关于这方面的完整资料进行介绍。
系统的演变
在
Windows 95
和
Windows NT 4.0
中微软通过各种不同的扩展使操作系统的
Shell
可编程并高度客户化,
Shell
和命名空间扩展只是其各种扩展的冰山一角。对
Shell
编程的一般理解还包括有
Shell
的
API
函数和注册表键等,他们也可以转变你的
Win32
应用。
集成的
Web
浏览器已经混淆了本地与远程对象的差别,它在你的桌面上使用相同的风格表示每一个事物。它可以扩展到包含用户的应用和资料。集成新的
Windows Shell
部件是这个进程的关键部分。所以,现今的
Shell
不仅仅是
COM
、扩展和用户接口,还包含了
Internet
、动态
HTML
和脚本
Windows
。
Shell
已经成为了包含大量客户端技术的汇集点。每一个开发基于
Windows
代码的程序员,很快或不久就将需要实际和深入例程来探索
Windows Shell
的内在特征。这本书包含了全部
API
函数详细说明,揭示其中的
Bugs
和没有说明资料的特征。它深入到探测器的内部世界,带出其中闪亮的东西,比如,钩子、注册表、浏览器帮助对象、
Shell
扩展、命名空间扩展和
Web
观察。他还注意到
Windows
脚本环境扩展和
Shell
脚本对象。
这本书是为专业开发者定制的,有三个主要的目标:
为现存的和资料贫乏的
Shell API
提供解释
给出新应用概念
显示关于
IE4.0
、活动桌面和
Windows98
的新特征和这些新特征怎样适应以存在的
Shell
。
本书范围
在这本书中我们见致力于回答下面一般的问题
什么是
Shell API
和我怎样使用它
怎样使用注册表来客户化我的
Windows Shell
我怎样才能建立向“回收站”和“我的公文包”那样的特殊目录
有哪些不同的方法把代码插入到探测器地址空间
怎样处理图标、任务条和“回收站”
什么是
Windows
脚本环境,我怎样才能使用它
什么是
Shell
脚本对象和浏览器帮助对象
我怎样才能实现
Shell
对我的应用处理的文档的支持
我怎样才能客户化我的文档的关联菜单
我怎样在
Shell
和命名空间扩展中使用
COM
和
ATL
来改变
Shell
的行为
怎样排除
Shell
扩展中的错误
解释建立成功的
Shell
集成的应用的原理和所需要的技术
我是怎样使用动态
HTML
客户化一个文件夹的
每一个
Shell
编程问题都使用实际例程进行说明,例子程序是由
VC++6.0
和
ATL3.0
书写的。这本书中还有一些更有趣的例程:
“开始”按钮的子类
建立和安装新的增强型快捷方式处理器
和
Windows
脚本环境一起工作的新对象
依据控制板尺寸指派不同的图标和
Bitmap
文件的
Shell
扩展
探测器中的按键和建立新的文件夹
在探测器中把打开的窗口作为节点显示
技术准备
准备一台运行
Windows98
、
Windows95
或
Windows NT 4.0 (
带有
ServicePack4.0)
的计算机就不用说了,还要特别注意的是有些例程要求你安装
IE4.0
以上版本。
代码是由
VC++6.0
和
ATL3.0
写成的,在
CV++5.0
中可能会有错误。书中还使用了
Windows
脚本环境和
IE4.01
环境编写了一些示例。
习惯用法
书中使用不同的文字方格和布局来区分不同的信息。下面是一些例子和他们的意义。
框中是重要的说明资料,它们直接向关于上下文内容。
|
其它信息以文字形式出现如下
.
重要文字以黑体形式给出
出现在屏幕山的文字,如菜单选择,与实际屏幕显示的字体相同
键盘上的按键如
Crtl
和
Delete
使用斜体
所有文件名都有
Pidl.cpp
这种风格
函数名则有
SHBrowseForFolder()
这种风格
新的,重要的和与当前讨论问题相关的代码有如下形式:
void CALLBACK TimerProc(HWND hwnd, UINT uMsg, UINT idEvent, DWORD dwTime)
{
HWND hwndOK = GetDlgItem(g_hwndDlg, IDOK);
// Simulate the Close button being pressed
if(IsWindowEnabled(hwndOK))
PostMessage(g_hwndDlg, WM_COMMAND, IDCANCEL, 0);
}
联系地址