- 1、本文档共27页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
VB 与 Widows API 讲座(四)-VB 无解问题与 API 的解决方案(现在免费开放了)
VB 与 Windows API 讲座(四)-VB 无解问题与 API 的解决方案
上一期介绍 Windows 的讯息系统, 对有些读者来说可能比较艰涩(或者说比较无趣),这是笔者想极力避免却又无法避免的事情, 毕竟讯息的观念在 Windows API 的程式设计中是不可或缺的,以本期所提出的 15 则问题, 就有 2 则的解决方案与讯息有关系。除了讯息的应用之外,由於本期预定刊载於 Run!PC 2 月号, 属於新春期间, 笔者想来点轻松而又实用的东西,所以特别挑选读者问过而 VB 无法解决的问题, 以 Windows API 来加以解决,除了第 4 则与第 15 则之外, 这些解决方案大抵上没有太艰涩的技术, 您只要跟着笔者所介绍的方法,就可以将它们应用於您的 VB 程式中。
在 Windows API 的呼叫过程中, 我们必须事先宣告所呼叫的 API 函数及其相关常数、自订型别,但这些宣告式通常是又臭又长, 有碍阅读, 所以笔者把它们集中放在最後的附录,当然, 为了方便您引用, 这些宣告式亦收录於笔者的网站, 请自行下载。此外,本文讨论的所有问题也都附有范例程式, 一样包含在下载的档案中。
问题1:我只是想将档案丢到「资源回收筒」,而不是从硬碟中删除。
这个绝对不能呼叫 VB 所提供的 Kill 叙述, Kill 叙述只会将档案从磁碟中删除,若要将档案丢到资源回收筒, 必须呼叫 SHFileOperation API 函数, 假设我们想将 c:\test.txt 丢到资源回收筒, 则呼叫的叙述如下:
Dim SHFileOp As SHFILEOPSTRUCT
SHFileOp.wFunc = FO_DELETE
SHFileOp.pFrom = c:\test.txt + Chr(0)
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
Call SHFileOperation(SHFileOp)
在以上叙述中有几件值得注意的事情:
FOF_ALLOWUNDO 表示被删除的档案将来可以还原, 此一设定值是绝对必要的。
FOF_NOCONFIRMATION 表示不显示交谈窗询问使用者「是否将档案丢到资源回收筒」,若要询问使用者, 则应取消此一设定值。
请注意 c:\test.txt 之後必须加上 Chr(0)。
利用以上方法也可以一次删除多个档案, 此时只要将多个档案名称串在一起,并且以 Chr(0) 分隔即可, 假设我们想删除 c:\test1.txt、c:\test2.txt、及 c:\test3.txt 等叁个档案, 则程式如下:
Dim SHFileOp As SHFILEOPSTRUCT
Dim Files As String
Files = c:\test1.txt + Chr(0) + c:\test2.txt + Chr(0) + c:\test3.txt + Chr(0)
SHFileOp.wFunc = FO_DELETE
SHFileOp.pFrom = Files
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
Call SHFileOperation(SHFileOp)
问题2:如何复制整个目录(包含子目录及其所有档案)?
如果使用 VB 所提供的功能, 必须使用的叙述及函数大致上有 Dir、Mkdir、及 FileCopy 等几个, 而所需撰写的程式也不算简单, 在此就不做介绍, 若呼叫 SHFileOperation API, 则只需短短的几行, 假设我们想将 c:\temp 目录的所有档案(包含其子目录)复制到 c:\temp2 目录底下, 则程式如下:
Dim SHFileOp As SHFILEOPSTRUCT
SHFileOp.wFunc = FO_COPY
SHFileOp.pFrom = c:\temp\*.*
SHFileOp.pTo = c:\temp2\*.*
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMMKDIR
Call SHFileOperation(SHFileOp)
在以上叙述中请注意一件事情:FOF_NOCONFIRMMKDIR 表示不显示交谈窗询问使用者「是否建立目录」,如果取消此一设定值, 而当 SHFileOp.pTo 所指定的目录不存在时, 则 Windows 会询问使用者是否建立目录。(SHFileOp.pTo = c:\temp2\*.* 写成 SHFileOp.pTo = c:\temp2 亦可)
问题3:如何快速改变档案的所在目录?
当我们想改变某一个档案的所在目录, 若使用 VB 所提
您可能关注的文档
- POS数据收集ebService方式开发指南V10.doc
- PMS系统操作训讲义.doc
- PowerPont电子演示文稿.doc
- PowerPesonal面壁思过修改版最终版.doc
- PowerMIL 培训教程-简介.doc
- PowerBulder 6.0开发分布式三层应用程序.doc
- PowerDeigner使用教程使用方法.doc
- PowerDeigner 业务处理模型.docx
- PSP金手指的瓜教程.doc
- PS2存档LANCHELF使用教程.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)