[转]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 ...
随机推荐
- 使用Intent在活动之间穿梭(《第一行代码》读书笔记)
以下全是个人理解//瞎扯 其实活动理解理解起来就像一个个函数 那么Intent就是调用函数和参数传递 可以有无参,仅仅是调用 Intent intent = new Intent(A.this, B. ...
- hdoj 2037 今年暑假不AC
今年暑假不AC Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Sub ...
- 《数据通信与网络》笔记--QoS
QoS(Quality of Service)服务质量,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术. 1.QoS参数 衡量服务质量QoS的参数主要包括: 端到端延迟(Delay) ...
- Android 添加、移除和判断 桌面快捷方式图标
思路: Launcher为了应用程序能够定制自己的快捷图标,就注册了一个 BroadcastReceiver 专门接收其他应用程序发来的快捷图标定制信息.所以只需要根据该 BroadcastRecei ...
- 【Away3D代码解读】(一):主要类及说明
在深入解读Away3D的代码之前,需要对其有个大概的认识.本节主要列出Away3D中常用的类,并附上说明: View3D: Away3D的入口类,即创建该类就会初始化一个可以使用GPU呈现3D的对象, ...
- Java的位运算符实例——与(&)、非(~)、或(|)、异或(^)
一.Java的位运算符实例——与(&).非(~).或(|).异或(^) 1.与(&) 0 & 2 = 0 0 0 0 0 1 0 0 1 0 2.非(~) ~0 = 7 0 0 ...
- java反射快速入门(二)
上一遍博文 , 简单介绍java 反射的常用接口,本遍博文, 我会结合项目开发的实际例子讲解下 java反射的使用 现在有个需求, 要将一个对象转换成xml格式, 或者将一串xml转换一个对象, 这时 ...
- Android进阶之大话设计模式
一般来说,常用的设计模式有以下八种:单例.工厂.观察者.代理.命令.适配器.合成.访问者 单例模式:目的是为了让系统中只有一个调用对象,缺点是单例使其他程序过分依赖它,而且不同单例运行在不同进程中,使 ...
- 【JSP】Cookie的使用及保存中文,并用Cookie实现购物车功能
Cookie是服务器存放在客户端的一些数据,比如密码,以及你曾经访问过的一些数据. 设置Cookie //设置cookie Cookie cookie = new Cookie("TOM&q ...
- android124 zhihuibeijing 新闻中心-组图
package com.itheima.zhbj52.base.menudetail; import java.util.ArrayList; import android.app.Activity; ...