[转]Windows Shell 编程 第二章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987893】
第二章Shell的结构
Shell模块
Shell的命名空间

PIDLs

- typedef struct _ITEMIDLIST
- {
- SHITEMID mkid;
- } ITEMIDLIST, *LPITEMIDLIST;
- typedef struct _SHITEMID
- {
- USHORT cb;
- BYTE abID[1];
- } SHITEMID, *LPSHITEMID;

Shell观察
Shell地址空间
Shell内存分配器
Shell任务条
Shell API 函数
|
组
|
功能
|
|
一般Windows函数
Shell内部函数
任务条函数
文件函数
文件夹函数
|
涉及到屏幕保护,控制面板脚本程序,联机帮助,以及Shell拖拽(不是OLE拖拽)
访问探测器地址空间的函数,获得Shell存储分配器的函数,导出可执行程序的函数以及感觉用户接口改变的函数。
涉及到托盘域的函数和与Windows任务条通讯的函数
操作文件的函数,他们执行如‘拷贝’,‘移动’,‘删除’和‘取得信息’等操作的系统活动,和添加文件到特殊的系统文件夹如‘最近文档’等。
操作文件夹的函数,使用这些函数,你可以浏览文件夹,获得系统文件夹的路径,发现文件夹的设置。
|
|
组
|
功能
|
|
图标函数
环境函数
Shell 轻量级API函数
|
从执行文件中抽取图标的函数
处理环境变量的函数
容易地访问注册表的函数,读写注册表函数,处理路径名函数,和处理字符串函数。
|
一般Windows函数
|
函数
|
描述
|
|
DragAcceptFiles()
|
标记允许窗口认可拖拽操作。
|
|
DragFinish()
|
从Shell中释放移动文件名列表所分配的内存
|
|
DragQueryFile()
|
从Shell处理拖拽而分配的内存块中抽取文件名
|
|
DragQueryPoint()
|
获得拖拽发生的点位置
|
|
CPlApplet()
|
控制面板脚本小程序的主程序
|
|
GetMenuContextHelpId()
|
返回关联于给定菜单的帮助ID
|
|
GetWindowContextHelpId()
|
返回关联于给定窗口的帮助ID
|
|
SetMenuContextHelpId()
|
设置关联于给定菜单的帮助ID
|
|
SetWindowContextHelpId()
|
设置关联于给定窗口的帮助ID
|
|
WinHelp()
|
打开帮助文件
|
|
ShellAbout()
|
显示默认和特定客户化的‘关于’信息框
|
|
|
|
Shell内部函数
|
函数
|
描述
|
|
ShellExecute()
|
在指定的文件上执行特殊操作
|
|
ShellExecuteEx()
|
与上面函数相同,但是有更多的选择
|
|
SHChangeNotify()
|
通过这个函数程序能够让Shell知道什么变化了,以及要求它刷新它所保有的信息
|
|
SHGetInstanceExplorer()
|
返回探测器IUnknown接口指针
|
|
SHGetMalloc()
|
返回一个指向Shell存储分配器的指针
|
|
SHLoadInProc()
|
装载指定的COM对象到探测器地址空间
|
任务条函数
|
函数
|
描述
|
|
Shell_NotifyIcon()
|
显示和管理靠近时钟的托盘区域的图标
|
|
SHAppBarMessage()
|
发送消息到系统的任务条
|
|
|
|
文件函数
|
函数
|
描述
|
版本
|
|
FindExecutable()
|
返回指定文件名注册的可执行文件路径
|
所有版本
|
|
SHAddToRecentDocs()
|
把给定文件的连接加到系统的‘最近文档’文件夹中。
|
所有版本
|
|
SHFileOperation()
|
用于拷贝、移动、删除或重命名一个或多个文件。
|
所有版本
|
|
SHFreeNameMappings()
|
释放SHFileOperation()函数在特定情况下返回的存储结构
|
|
|
SHGetFileInfo()
|
返回给定文件的各种信息块
|
所有版本
|
|
SHGetNewLinkInfo()
|
建立新的快捷方式名
|
4.71
|
文件夹(Folder)函数
|
函数
|
描述
|
版本
|
|
SHBrowseForFolder()
|
显示选择文件夹的对话框
|
所有版本
|
|
SHEmptyRecycleBin()
|
销毁‘回收站’的内容
|
4.71
|
|
SHGetDataFromIDList()
|
从标识符表中恢复数据
|
所有版本
|
|
SHGetDesktopFolder()
|
返回‘桌面’文件夹的IShellFolder指针
|
所有版本
|
|
SHGetDiskFreeSpace()
|
返回指定驱动器的磁盘可用空间
|
4.71
|
|
SHGetPathFromIDList()
|
返回指定标识符列表的路径名(如果存在)
|
所有版本
|
|
SHGetSpecialFolder
Location()
|
返回特殊的系统文件夹的标识符列表
|
4.71
|
|
SHGetSpecialFolderPath()
|
返回系统特殊文件夹的路径名(如果存在)
|
所有版本
|
|
SHGetSettings()
|
返回文件夹当前设置的值
|
4.71
|
|
SHInvokePrinterCommand()
|
向打印机发送命令
|
4.71
|
|
SHQueryRecycleBin()
|
返回‘回收站’当前占有的空间
|
4.71
|
|
|
|
|
图标函数
|
函数
|
描述
|
|
ExtractIcon()
|
返回可执行文件的图标Handle
|
|
ExtractIconEx()
|
与上函数相同,但是有更多的选择。
|
|
ExtractAssociatedIcon()
|
基于文件类,返回指定文件的图标Handle
|
COM接口
|
组
|
接口
|
|
Shell 扩展
|
涉及到所有Shell活动的COM接口,从图标到关联菜单,从UI活动到文件观察
|
|
Namespace 扩展
|
涉及到命名空间扩展的COM接口
|
|
钩子
|
能够钩住某些东西的接口,特别是程序执行,URL转换和建立Internet快捷方式
|
|
杂项接口
|
一些零碎接口,如客户化任务条的接口,与打开对话框通讯的接口和对‘我的公文包’编程的接口
|
Shell接口
|
接口
|
描述
|
版本
|
|
IFileViewer,
IFileViewerSite
|
使你能定义对给定类型的文件提供‘快速观察’处理器的模块。
|
所有版本
|
|
IInputObject,
IInputObjectSite
|
这两个接口用于处理UI活动和对具有接收用户输入的Shell对象进行加速操作处理。
|
4.71
|
|
IShellIconOverlay,
IShellIconOverlayIdentifier
|
用于发送文件图标重叠消息,使你能够知道用于给定文件的重叠形式。一个图标重叠是Shell绘制在图标上的Bitmap图像,以便更好地表现它,如,一个手形重叠表示文件夹的共享。
|
4.71
|
|
IContextMenu,
IContextMenu2
|
允许为特殊类型的文件添加新的关联菜单项。
IContextMenu2处理自绘菜单
|
所有版本
|
|
IContextMenu3
|
与IContextMenu2相同,但是给出了更好的键盘控制。
|
4.71
|
|
IShellExtInit
|
执行一个Shell扩展的初始化
|
所有版本
|
|
IShellChangeNotify
|
SHChangeNotify() API函数在Shell扩展上的副本,基本上,它允许你写一个模块钩住由SHChangeNotify()函数通知的Shell层上的变化。
|
4.71
|
|
IExtractIcon
|
允许你获取任何文件夹项的图标信息。
|
所有版本
|
|
IShellIcon
|
提供另一种获取任何文件夹项图标信息的方法,在特定情况下,这种方法优于IExtractIcon方法。
|
所有版本
|
|
IShellLink
|
允许建立和解析文件和文件夹的快捷方式
|
所有版本
|
|
IShellPropSheetExt
|
用于为指定文件类增加属性页到‘属性’对话框。
|
所有版本
|
|
|
|
|
命名空间接口
|
接口
|
描述
|
版本
|
|
IShellView,
IShellView2
|
用于定义命名空间扩展的观察对象。IShellView2仍然没有文档资料,但是在基于Web的观察中有使用。
|
所有版本
|
|
IShellBrowser
|
显示浏览器,他就是探测器或Internet探测器。
|
所有版本
|
|
IEnumIDList
|
提供Shell 枚举文件夹内容的方法。
|
所有版本
|
|
IShellFolder
|
提供令shell以标准方式处理客户文件夹的方法。IShellFolder对探测器隐藏客户代码。
|
所有版本
|
|
IPersistFolder
|
使你能初始化某些Shell扩展和所有命名空间扩展。
|
所有版本
|
|
IPersistFolder2
|
与上相同,加入了一些对基于Web的观察更强的支持。
|
4.71
|
|
IQueryInfo Retrieves flags and infotip text for items in a folder. 4.71
|
恢复文件夹项的标志和信息标签文字。
|
4.71
|
|
|
|
|
钩子接口
|
接口
|
描述
|
版本
|
|
ICopyHook
|
能钩住Shell中的所有文件操作(拷贝、移动、删除、重命名)。
|
所有版本
|
|
IURLSearchHook
|
使你能够探知探测器正在试图转换一个不可知的URL协议。
|
4.71
|
|
INewShortcutHook
|
使你能够探知探测器正在试图建立新的Internet快捷方式。
|
4.71
|
|
IShellExecuteHook
|
能够钩住通过ShellExecute()或ShellExecuteEx()导出的所有新进程的启动。
|
所有版本
|
|
|
|
|
杂项接口
|
接口
|
描述
|
版本
|
|
INotifyReplica,
IReconcilableObject,
IReconcileInitiator
|
所有这些接口都涉及到文件调整过程。最终都产生同一个文档的更新版本。
|
所有版本
|
|
ICommDlgBrowser
|
当客户文件夹嵌入到通用对话框中时,提供特殊的浏览行为。
|
所有版本
|
|
ITaskbarList
|
允许在系统任务条中加入新的按钮。
|
4.71
|
|
|
|
|
为什么又有API,又有COM
活动桌面有什么变化
新的Shell观察对象






新任务条的布局

[转]Windows Shell 编程 第二章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987893】的更多相关文章
- [转]Windows Shell 编程 第四章 【来源 http://blog.csdn.net/wangqiulin123456/article/details/7987933】
第四章 文件的本质 以前,所有文件和目录都有一个确定的属性集:时间,日期,尺寸,以及表示‘只读的’,‘隐藏的,‘存档的’,或‘系统的’状态标志.然而,Windos95(及后来的WindowsNT4.0 ...
- [转]Windows Shell 编程 第九章 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987969】
第九章 图标与Windows任务条 如果问一个非程序人员Windows最好的特色是什么,得到的答案应该是系统最有吸引力的图标.无论是Windows98现在支持的通用串行总线(USB)还是WDM(看上去 ...
- [转]Windows Shell 编程 第三章 【转自:http://blog.csdn.net/wangqiulin123456/article/details/7987901】
第三章 操作文件 我依然清楚地记得,Windows95 的贝塔版出现的情形,它在朋友之间和学院中传播,好酷,全新的文件管理器,一种全图标,全彩色可客户化的界面,以及活泼的动画标识使得在文件拷贝和删除方 ...
- [转]第一章 Windows Shell是什么 【来源:http://blog.csdn.net/wangqiulin123456/article/details/7987862】
一个操作系统外壳的不错的定义是它是一个系统提供的用户界面,它允许用户执行公共的任务,如访问文件系统,导出执行程序,改变系统设置等.MS-DOS有一个Command.COM扮演着这个角色.然而Windo ...
- Shell 括号辨识(转http://blog.csdn.net/taiyang1987912/article/details/39551385)
一.小括号,圆括号() 1.单小括号 () ①命令组.括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用.括号中多个命令之间用分号隔开,最后一个命令可以没有 ...
- VMware下Ubuntu与宿主Windows共享文件夹 (转至 http://blog.csdn.net/zz962/article/details/7706755)
概述 1.安装VMware Tool 2.设置共享 步骤 开始安装VMware Tool 显示如下画面(如果宿主无法访问外网,可能会出现一个更新失败,可以无视之) 通过下列命令解压.执行,分别是下面的 ...
- Windows下QT4.8.4编译环境的搭建(转载http://blog.csdn.net/bestgonghuibin/article/details/38933141)
开始使用QT了,所以第一步就是把环境搭起来,这里小记一下,以免以后忘记. 1. 下载安装文件 要使用QT功能,那么必须要下载QT的源码,还必须要一个是用QT的编译环境,可以是VS2010,也可以是专用 ...
- windows 安装lua-5.3.4 --引用自https://blog.csdn.net/wangtong01/article/details/78296369
版权声明:本文为博主原创文章,转载时请标明出处.http://blog.csdn.net/wangtong01 https://blog.csdn.net/wangtong01/article/det ...
- ubuntu下设置jupyter notebook 2017年07月29日 19:28:34 小旋锋 阅读数:8329 标签: ubuntu 更多 个人分类: python 二三事 来源:http://blog.csdn.net/suzyu12345/article/details/51037905 Ipython Notebook现在已经改名为Ipython jupyter,是最知名最好用的
ubuntu下设置jupyter notebook 来源:http://blog.csdn.net/suzyu12345/article/details/51037905 Ipython No ...
随机推荐
- Ubuntu 固态硬盘 4K对齐及启用 Trim,及其验证方法
因为之前一个移动硬盘因为坏道蔓延导致没办法继续使用,我略冲动地跑去买了一块 120GB 的三星840 固态硬盘回来.为了使用起来更方便,还去弄了个光驱位硬盘托架,把固态硬盘接在了光驱位与原本的笔记本硬 ...
- ubuntu openstack spice
Openstack启用spice协议 #控制节点 #安装 ? 1 apt-get install nova-spiceproxy spice-html5 spice-vdagent #配置 nano ...
- 家庭局域网接入Internet
接入Internet 建立宽带连接 步骤一:单击"网络",再属性 步骤二:单击"更改适配器设置" 步骤三:选择"宽带连接" 步骤四:输入 ...
- hdoj 1008 Elevator
Elevator Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Su ...
- Intent简介
1 Intent概念 1.1 Intent的作用 指明Intent所要启动的对象 提供将要启动对象组件运行需要的数据 组件类型 启动方法 Activity startActivity(Intent i ...
- 利用HTML5 Geolocation API在百度地图中显示你的位置
代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <met ...
- Emgu CV 高斯建模
Codeprivate void button1_Click(object sender, EventArgs e) { Emgu.CV.Capture cap = new Capture(" ...
- PowerDesigner概念数据模型 CDM
目标:本文主要介绍PowerDesigner中概念数据模型 CDM的基本概念. 一.概念数据模型概述数据模型是现实世界中数据特征的抽象.数据模型应该满足三个方面的要求:1)能够比较真实地模拟现实世界2 ...
- MySQL数据库备份还原(基于binlog的增量备份)
MySQL数据库备份还原(基于binlog的增量备份) 一.简介 1.增量备份 增量备份 是指在一次全备份或上一次增量备份后,以后每次的备份只需备份与前一次相比增加或者被修改的文件.这就意味 ...
- Young不等式的一个新证明
设 $p>0,q>0,a>0,b>0$ 且 $1/p+1/q=1$ 有 \[ab\leq \frac{a^{p}}{p}+\frac{b^{q}}{q}\] 证明:设 \[f( ...