999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于VB和API函數實現文件時間屬性的獲取和設置

2008-12-31 00:00:00宮德龍
電腦知識與技術 2008年35期

摘要:在數據備份時難以保持文件原來的時間屬性,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, OPEN_EXISTING, 0, 0)

' 獲取文件時間屬性信息

GetFileTime hDir, lpCreationTime, lpLastAccessTime, lpLastWriteTime

CloseHandle(hDir)'關閉打開過的句柄

2) 設置指定文件的時間屬性,其中入口參數destFile指定了待處理的文件,new_stime為指定時間,關鍵代碼如下:

'獲取指定文件的句柄

HANDLE hDir = CreateFile(destFile, GENERIC_READ Or GENERIC_WRITE, FILE_SHARE_READ Or FILE_SHARE_WRITE, 0, OPEN_EXISTING, 0, 0)

'設置文件的時間屬性

SetFileTime hDir,lpCreationTime, lpLastAccessTime, lpLastWriteTime CloseHandle(hDir)'關閉打開過的句柄

在上述代碼中,stime和new_stime均為SYSTEMTIME結構,其他時間參數為FILETIME結構,具體代碼由讀者自行實現。

4 結語

本文通過使用VB和API函數來對任意文件的時間屬性進行獲取與寫入處理,在數據的完整備份與復原等方面中有較好的應用前景。本文所述代碼在Windows XP Professional下,由Microsoft Visual Basic 6.0編譯通過。

參考文獻:

[1] Roman S.Visual Basic Win32 API編程[M].北京:中國電力出版社,2001.

[2] 冉林倉.WINDOWS API編程[M].北京:清華大學出版社,2005.

[3] 申石磊,張東生.Visual Basic程序設計[M].北京:中國科學技術出版社,2007:37-40.

[4] 林永,張樂強.Visual Basic 6.0用戶編程手冊[M].2版.北京:人民郵電出版社,2002.

主站蜘蛛池模板: 伊人天堂网| 免费观看欧美性一级| 91小视频在线观看| 波多野结衣二区| 欧美亚洲一二三区| 99国产精品免费观看视频| 欧美性色综合网| 福利片91| 亚洲最大福利网站| 精品一区二区三区无码视频无码| 国产精品爆乳99久久| 婷婷丁香在线观看| 欧美在线国产| 青青青国产精品国产精品美女| 久久美女精品| 日韩在线永久免费播放| 丝袜久久剧情精品国产| 97在线碰| 国产av剧情无码精品色午夜| 一本色道久久88| 国产精彩视频在线观看| 91视频国产高清| 欧美在线黄| 欧洲日本亚洲中文字幕| 欧美不卡在线视频| 欧美a√在线| 色天天综合| 青青久视频| 国产乱子伦视频在线播放| 亚洲色欲色欲www网| 91在线一9|永久视频在线| 午夜福利视频一区| 九九香蕉视频| 色综合久久88| 亚洲三级成人| 欧洲av毛片| 亚洲天堂2014| 91免费国产高清观看| 亚洲国产精品一区二区第一页免| 亚洲午夜18| 亚洲人成网址| 亚洲男人的天堂网| 天天做天天爱夜夜爽毛片毛片| 国产成人91精品| 午夜精品久久久久久久无码软件| www.国产福利| 亚洲六月丁香六月婷婷蜜芽| 国产成人精品一区二区不卡| 欧洲熟妇精品视频| 日韩无码黄色网站| 国产精品冒白浆免费视频| 色久综合在线| 黄色在线网| 狠狠综合久久| 久久久久免费精品国产| 欧美在线精品怡红院| 亚洲免费福利视频| jizz国产视频| 亚洲狠狠婷婷综合久久久久| 91九色国产在线| 国产网友愉拍精品| 青草国产在线视频| 精品亚洲国产成人AV| 国产精品 欧美激情 在线播放| 久久国产精品电影| 日韩在线观看网站| 欧美亚洲国产精品久久蜜芽| 美女高潮全身流白浆福利区| 国产在线高清一级毛片| 亚洲成人黄色网址| 欧美日本在线观看| 国产黄在线免费观看| 国产精品第一区| 国模私拍一区二区| 国产原创演绎剧情有字幕的| 人妻无码一区二区视频| 亚洲欧美色中文字幕| 亚洲日韩欧美在线观看| 91丨九色丨首页在线播放| 全部免费毛片免费播放| 曰韩免费无码AV一区二区| 国产成人高清在线精品|