您现在的位置是: 软件 > 开发者网络 > 程序方舟 > 开发专栏 > Visual C++开发 > 正文
·速成电脑精英(包分配)白领高薪一族从这里开始



-Java套接字编程(下)
-MediaStudio Pro 6.5教程
-三款卸载软件最新试用
-基于Visual C++的Winsock API研究

通过COM技术实现Windows外壳编程
2002-05-08· ·信息产业部电子第二十二研究所青岛分所郎锐··yesky

1 2  下一页


  摘要:本文介绍了一种有别于通常的Windows外壳编程方法。采用COM技术,通过Windows提供的外壳接口实现对其的编程。

  一、 引言

  在Windows环境下,不论是使用Visual C++还是Delphi或是其他一些软件开发工具,尽管存在着差别,但有一点是相同的:都是运行于Windows操作系统之下的。在程序开发过程中也经常要在自己的应用程序中加入一些Windows系统本身就有的功能,比如文件的拷贝、删除、查找以及运行程序等等。而这些功能在Windows操作系统下都是具备的,显然如果能直接从系统中调用这些功能将不仅仅减少程序的大小和开发人员的工作量,而且由于是直接通过操作系统来完成这些功能,将会大大减小这部分程序出现异常错误的概率。Windows系统虽说也存在不少错误,但常用功能的错误还是比较少的,而且通过补丁程序可以更低限度减少系统错误,因此程序员可以将调试检错的注意力放在应用程序的其他地方,对于调用系统功能这部分代码则可以不必投入太大的精力去调试,因为这部分调试的工作在操作系统发布的时候就已经由微软做好了。

  二、 Windows外壳编程

  前面所说的直接使用Windows操作系统部分功能的编程方法就是针对Windows操作系统外壳的编程,可以通过对操作系统提供的几个编程接口对操作系统的部分功能进行调用,甚至可以按照自己的意图在应用程序中对部分功能进行修改、扩展。但这方面的资料介绍不是特别多,讲的也大都语焉不详,而且用通常的编程方法去进行外壳编程是非常麻烦的,动辄就要对相关的结构对象进行设置,而这样的结构里的数据成员少则十来个多则几十个,因此配置起来非常烦琐,下面就以一个比较简单的外壳操作--拷贝文件进行举例说明:

……
SHFILEOPSTRUCT FileOp; //外壳的文件操作结构
FileOp.hwnd=m_hWnd; //设置句柄
//设置操作方式,拷贝用FO_COPY,删除用 FO_DELETE
FileOp.wFunc=FO_COPY;
FileOp.pFrom=m_source; //源文件路径
FileOp.pTo=m_detect; //目标文件路径
FileOp.fFlags=FOF_ALLOWUNDO; //允许恢复
FileOp.hNameMappings=NULL;
FileOp.lpszProgressTitle=strTitle; //设置标题
SHFileOperation(&FileOp); //执行外壳拷贝
if(FileOp.fAnyOperationsAborted) //监测有无中止
TRACE("An Operation was aborted!!!\n");
……

  上述代码实现起来虽然效果还是不错的,但然实现起来却是比较麻烦的,这仅仅是一个比较简单的外壳操作,对于一些比较复杂的外壳操作比如系统托盘、任务条等等的编程,更是尤为严重,而且象此类编程,MFC里并没有提供封装好的程序类库,提供的只有系统的WinAPI 应用程序接口,因此在程序开发过程中往往会有一种在进行SDK编程的感觉。

1 2  下一页

【责任编辑:方舟】
【发表评论】【关闭窗口】
■ 相关内容
 向CCmdTarget的派生类添加一个接口的实现
 公寓间的线程调度问题
 COM组件中的线程模式
 用VC进行COM编程所必须掌握的理论知识
 COM组件中使用用户自定义数据类型
 COM技术纵横谈
 Visual C++.NET完全兼容VC++么
 Visual C++ 文件处理及打印绘图
 Visual C++ MFC/ATL开发
 Visual C++ 数据库开发
 Visual C++实现视频图像处理技术
 Visual C++多媒体及图形、图像处理
 Visual C++ .NET编程:托管C++概述
 Visual C++ .Net编程实战
 在Visual C++中用ADO进行数据库编程
 Visual C++多线程DAO处理
 Visual C++ 系统及硬件编程
 用Visual C++开发数据库应用程序
 Visual C++ 网络与通讯
 Visual C++界面编程
 Visual C++中实现对图像数据的读取显示
 用Visual C++增强Notes打印功能
 用Visual C++操作INI文件
感谢 访问天极网,如果您觉得该文章涉及版权问题,请看这里!