基于VB和API函数实现文件时间属性的获取和设置

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:wanwan1985
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:在数据备份时难以保持文件原来的时间属性,Windows也没有提供直接设置时间属性的工具。对此,首先介绍了API函数和时间格式,总结出利用VB和API解决问题的方法,具有良好的应用前景。
  关键词:VB;API;时间属性
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)35-2161-02
  Obtain and Modify the File’s Time Attributes Based on VB and API
  GUO Nian1,GONG De-long2
  (1.Computer Center,Henan University,Kaifeng 475001,China;2.Basic Experiment Teaching Center,Henan University, Kaifeng 475004,China)
  Abstract:The original time attributes is difficult to maintain in the data backup. And Windows does not provide a direct way to modify attributes. The article introduces API functions and Windows time formats at first, and based on VB and API functions summarizes a solution to the problem. The solution has a good prospect of application.
  Key Word:VB;API;time attributes
  
  1 引言
  
  对于很多计算机用户而言,数据备份就是备份数据内容本身,很少涉及到文件的时间属性。在某些对数据管理有着非常严格要求的特殊行业中,备份文件的时间属性也十分重要。但在目前Windows操作系统下,数据备份难以保持文件原来的时间属性,Windows操作系统也没有提供直接设置时间属性的方法和工具。笔者对此问题做了深入研究,并总结出一种解决此题的方法。
  VB采用可视化编程技术、面向对象的事件驱动机制,能够快速地开发各种应用程序。然而VB在功能上具有局限性,不能直接控制和处理计算机的系统参数和硬件资源。为了增强VB的开发能力,VB提供了访问Windows API的方法。本文阐述了在VB平台上,利用Windows API函数,来获取和设置文件的时间属性。
  
  2 Windows API函数简介
  
  Windows API(Application Programming Interface)是操作系统支持的函数定义、参数定义和消息格式的集合, API函数主要包含在三个动态链接库(DLL),分别是User32.dll、kernel32.dll和GDI.dll。对于VB应用程序而言,API函数是外部过程,VB必须先声明后调用。API函数的声明通过Declare语句来实现,声明格式有两种:
  格式一:有返回值的Function过程声明:
  Declare Function API函数名Lib“库名”[Alias“别名”]([参数列表])As类型
  格式二:无返回值的Sub过程声明:
  Declare Sub API函数名Lib“库名”[Alias“别名”]([参数列表])
  其中“API函数名”指的是DLL中的函数名,也是VB应用程序中使用的过程名;“库名”表示函数所在的动态链接库,是DLL文件的名称;“别名”(Alias)一般情况下不使用;“参数列表”用来指定传给API函数的参数,参数的传递形式由函数自身决定,不由用户选择。具体步骤是:
  1) 通过外接程序管理器加载VB 6.0 API Viewer外接程序;
  2) 在API Viewer应用程序窗口中,打开Win32api.txt文件,查找到所需声明的API函数和类型定义,并进行复制;
  3) 将前面复制的API函数和类型定义复制到工程的窗体模块、标准模块或类模块中。
  
  3 获取和设置文件的时间属性
  
  文件的时间属性是指文件的创建时间、最后一次修改时间和上一次访问时间,备份数据时往往无法复制原来的属性。在VB平台上,要获取和设置文件的时间属性,需要借助API函数GetFileTime和SetFileTime来实现。
  3.1 时间格式转换
  在GetFileTime和SetFileTime函数原型中,参数lpCreationTime、lpLastAccessTime和lpLastWriteTime都采用了FILETIME结构,是Windows的一种时间格式。此结构保存一个64位二进制数值,有两个长整型(Long)字段,表示从1601年1月1日起的100毫微秒间隔数,称为UTC时间(格林尼治时间),其结构声明如下:
  Private Type FILETIME
  dwLowDateTime As Long
  dwHighDateTime As Long
  End Type
  在此结构中,我们无法直接识别出年、月、日、时、分、秒等信息,而Windows的另一种时间格式可以解决此问题,就是SYSTEMTIME时间格式。它是一个包含有年、月、星期、日、小时、分、秒、微秒这些成员的结构,其结构声明如下:
  Private Type SYSTEMTIME
   wYear As Integer
   wMonth As Integer
   wDayOfWeek As Integer
   wDay As Integer
   wHour As Integer
   wMinute As Integer
   wSecond As Integer
   wMilliseconds As Integer
  End Type
  针对上述两种结构,Windows提供了专门的API函数来实现相互间的转换。因此,使用GetFileTime获取文件时间属性后,需要先调用FileTimeToLocalTime消除时差,再调用FileTimeToSystemTime,把FILETIEME格式转换为SYSTEMTIME格式便于识别;使用SetFileTime设置文件时间属性前,也需要调用SystemTimeToFileTime把SYSTEMTIME格式转化为FILETIEME格式用于设置时间属性。
  3.2 获取和设置文件时间属性的实现
  在使用GetFileTime和SetFileTime函数获取或设置文件的时间属性时,需要先获取指定文件的句柄,之后并关闭已打开文件的句柄。具体而言,首先使用函数CreateFile打开文件对象,获取文件句柄;然后调用函数GetFileTime和SetFileTime获取和设置文件的时间属性;最后使用函数CloseHandle关闭文件句柄。
  1) 获取指定文件的时间属性,其中入口参数scrFile指定了待处理的文件, stime用来保存获取的文件时间属性。关键代码如下:
  ’ 获取指定文件的句柄
  HANDLE hDir = CreateFile(scrFile, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0
其他文献
摘要:Ipv4有着不可克服的问题,必须用新的协议来替代。通常协议的过渡是很不容易的,从IPv4 向IPv6 的过渡也是如此。如何使得已支持IPv4 的设备和应用程序向IPv6 过渡, 是一个急需解决的问题。本文将详细介绍由IPv4 向IPV6 的几种过渡策略。并阐述了ipv6在我国发展的几点思考。  关键词:IPv4和IPv6;IPv6过渡;IPv6在我国发展的思考  中图分类号:TP393文献标
摘要:诸如《孔雀东南飞》一样的文质兼美的长篇文言文,因着文言与课时的限制,教学常常处于困境,串讲文言、鉴赏特色,苦无妙法兼顾二者。笔者在执教过程中,将“开心辞典”引入古文教学,用“小组学习”激活文言课堂,解放了老师,激活了学生。  关键词:《孔雀东南飞》 文言文教学 开心辞典 小组学习  《孔雀东南飞》是我国古代最长的一首叙事诗,是人教版必修二第二单元的一篇文章。这篇文章共有22个自然段,共178
摘要:文章简要介绍Access程序设计课程特点和重要性,对该课程的理论教学、实验教学和考试等过程中的教学方法进行了探讨,并讨论了如何加强学生的动手实践能力。   关键词:Access程序设计;教学方法;范例教学法  中图分类号:G642文献标识码:A文章编号:1009-3044(2009)22-pppp-0c    Access采用可视化编程技术、面向对象的事件驱动编程机制[1,3],既是一个面向
摘要:本文叙述了P2P网络的概念、发展历史以及它与传统网络模式的区别,探讨和分析了JXTA技术,阐述了基于JXTA技术对分布式课程辅助教学应用系统JBCAT的研究、设计与实现。  关键词:Peer-to-Peer;混合模式P2P;JXTA技术;计算机辅助教学;网络协作化  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)12-20000-00    The Resea
摘要:网络的安全性日益重要,防火墙技术也越来越受到人们的关注。本文详细介绍了防火墙的原理,讨论了基于iptables/netfilter框架的Linux操作系统防火墙的实现,并结合具体情况说明了iptables命令的使用方法。  关键词:防火墙;linux;iptables;netfilter  中图法分类号:TP309文献标识码:A文章编号:1009-3044(2008)08-10ppp-0c 
摘要:用VC 开发一个管理系统,要使用数据库对所需的数据进行存储与管理。该文介绍了Visual C 访问开发数据库的几种技术概况及其访问的方法:ODBC,DAO,OLE/DB和ADO,并对各种技术的使用范围、访问效率、工作稳定性等进行了比较,并给出了基本使用方法。  关键词:ODBC;DAO;OLE/DB;ADO  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2009
摘要:数字版权保护技术已经成为网络电视中一项核心技术。它用于保护内容所有人的版权,控制用户对内容的使用。该文针对IPTV业务的版权保护需求,提出了一种基于AVS的IPTV数字版权管理系统模型,重点阐述了其工作流程及各组成部分,并对其相关性能进行分析。  关键词:先进音视频编码;网络电视;数字版权管理  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)36-2614-03
《义务教育语文课程标准(2011年版)》(以下简称“课标”)指出,语文教学要面向全体学生,使学生获得基本的语文素养,明确语文教学的逻辑起点是学科素养目标的达到。目标从知识点的了解、理解与记忆,转变为学科核心素养的关键能力、必备品格与价值观念的培育,这要求教师必须提升教学设计的站位,即从关注单一的知识点、课时教学转变为大单元教学设计。这样才能改变学科知识的碎片化教学,真正实现教学设计与素养目标的有效
我国文学的发展历程、文学思想与西方文学存在较大差异,在跨文化交流背景下,文学的比较研究是对本土文学和外来文学进行深度解析,并探究其背后文化的一个重要思路。由贺一舟著、北京理工大学出版社出版的《跨文化视域下中外文学比较研究》一书,是基于比较文学研究一般理论编写的文学研究论著。本书介绍并比较了世界各大文化圈的神话、英雄史诗、抒情诗、戏剧、小说和文学理论等内容。书中不仅有中国文学与西方文学的比较,也有全
摘要:针对当前僵尸网络向P2P方向发展的趋势,在对P2P僵尸网络本质的理解和把握的基础上,提出了一种新颖的P2P僵尸网络检测技术。对于某个被监视的网络,关注其内部每台主机的通信行为和网络恶意活动。把这些通信行为和网络恶意活动分类,找出具有相似或相关通信和网络恶意行为的主机。根据我们对定义的理解,这些主机就属于某个P2P僵尸网络。  关键词:P2P;僵尸网络;检测;网络安全  中图分类号:TP393