网站大量收购独家精品文档,联系QQ:2885784924

VB 与 Widows API 讲座(四)-VB 无解问题与 API 的解决方案(现在免费开放了).doc

VB 与 Widows API 讲座(四)-VB 无解问题与 API 的解决方案(现在免费开放了).doc

  1. 1、本文档共27页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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 所提

文档评论(0)

weg665 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档