行情
:
北京
上海
广州
深圳
沈阳
济南
郑州
武汉
长沙
南京
西安
成都
昆明
杭州
IT搜索
文章
报价
经销商
术语
图片
手册
维修
e杂志下载
首页
|
资讯
网刊
视频
评测
企业:
服务器
网络
存储
通信
安全
技术开发
信息化-方案
|
ITPUB
IXPUB
商务
:
笔记本
台式机
投影机
打印扫描
办公产品
耗材
软件
学院
下载
驱动
家庭
:
数字家电
家庭组网
个人
:
DIY硬件
|
手机
GSM
CDMA
无线电
GPS
|
数码影像
相机
摄像机
|
消费数码
MP3
|
论坛
|
经销商社区
报价中心
三维图秀
产品评论
产品大全
使用手册
术语详解
厂商专区
二手市场
维修服务
疑难解答
IT搜索
技术首页
:
Java
.NET
数据库
|
ITPUB社区
:
数据库
开发技术
管理
资料
Blog
IBM精英协会
投稿
(C#)Windows Shell 编程系列2 - 解释,从“桌面”开始展开
作者:柠檬的 发表日期:2007-04-17 10:06
内容导航:
第1页
第2页
上一页
1
2
下一页
[IT168 技术文档]
接上一篇:
(C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹
让我们详细解释一下 Shell 编程中最基本的一些函数、结构体和枚举。
SHGetDesktopFolder
获取桌面的 IShellFolder 接口
[DllImport(
"
shell32.dll
"
)]
public
static
extern
Int32 SHGetDesktopFolder(
out
IntPtr ppshf);
要使用这个函数,必须先定义一个 IntPtr 指针。然后通过指针,使用 GetObjectForIUnknown 返回通过指向 COM 对象的
IShellFolder
接口的指针实例。于是需要编写以下函数:
public
static
IShellFolder GetDesktopFolder(
out
IntPtr ppshf)
{
SHGetDesktopFolder(
out
ppshf);
Object obj
=
Marshal.GetObjectForIUnknown(ppshf);
return
(IShellFolder)obj;
}
ParseDisplayName
获得对象的PIDL,即便对象在目录树中处于当前目录下一层或更多层。例如,对于文件对象来说,它的解析名就是它的路径,我们用文件系统对象的完全路径名来调用桌面的IshellFolder接口的 ParseDisplayName 方法,它会返回这个对象的完全PIDL。定义:
void
ParseDisplayName(
IntPtr hwnd,
IntPtr pbc,
[MarshalAs(UnmanagedType.LPWStr)]
string
pszDisplayName,
out
uint
pchEaten,
out
IntPtr ppidl,
ref
uint
pdwAttributes);
里面最重要的参数就是 out IntPtr ppidl 了,它返回 pszDisplayName 指定路径对应的 PIDL。然而仅仅是 PIDL 并不能让你做更多的事情。这时候还需要调用 BindToObject 来返回 IShellFolder 接口。
BindToObject
根据 PIDL 创建和初始化 IShellFolder 对象。定义:
void
BindToObject(
IntPtr pidl,
IntPtr pbc,
[In()]
ref
Guid riid,
out
IShellFolder ppv);
里面有一个 [In()] ref Guid riid 参数,表示接口的接口标识符 (IID)。GUID其实就是一个唯一的标识符。世界上的任何两台计算机都不会生成重复的 GUID 值。GUID 主要用于在拥有多个节点、多台计算机的网络或系统中,分配必须具有唯一性的标识符。我们这里使用 IID_IShellFolder 表示它获取的是一个 IShellFolder 接口。
public
static
Guid IID_IShellFolder
=
new
Guid(
"
{000214E6-0000-0000-C000-000000000046}
"
);
另外介绍 IEnumIDList 接口。IEnumIDList 接口使资源管理器获得文件夹包含的全部对象的PIDL,PIDL然后可以用来获得这些对象的信息。
1
上一页
1
2
下一页
【内容导航】
第1页
第2页
【相关文章】
下一篇:
(C#)Windows Shell 编程系列1 - 基础,浏览一个文件夹
©版权所有。未经许可,不得转载。
【责任编辑:
孙蓬阳
】
网友评论
CopyRight 1999-2008 itpub.net All Right Reserved. E-mail:Webmaster@itpub.net
北京皓辰广域网络信息技术有限公司. 版权所有
京ICP证:010037号
联系我们
法律顾问