TC官方合作论坛

 找回密码
 立即注册
查看: 1465|回复: 1

第七法。7.2,api的调用方法。实战GetFileTime()

[复制链接]
发表于 2017-5-12 19:01:37 来自手机 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
第七法。7.2,api的调用方法。实战GetFileTime()
.
搜狗百科:GetFileTime
VB声明
Declare Function GetFileTime Lib"kernel32"Alias"GetFileTime"(ByVal hFile As Long, lpCreationTime As FILETIME, lpLastAccessTime As FILETIME, lpLastWriteTime As FILETIME) As Long
说明
取得指定文件的时间信息
返回值
Long,非零表示成功,零表示失败。会设置GetLastError
参数类型及说明
hFile Long,文件的句柄
lpCreationTime FILETIME,用于装载文件的创建时间
lpLastAccessTime FILETIME,用于装载文件上一次访问的时间(FAT文件系统不支持这一特性)
lpLastWriteTime FILETIME,用于装载文件上一次修改的时间
注解
如果不需要特定的信息,那么lpCreationTime,lpLastAccessTime,lpLastWriteTime都可以设置为零(用ByVal As Long)。
.
这个函数引用返回的文件时间,采用UTC格式。
可以用
FileTimeToSystemTime(FILETIME, ST),将文件时间转换为标准系统时间
再使用
SystemTimeToTzSpecificLocalTime(ST, ST),将标准系统时间转换为本地系统时间
=======================================================
VB约定:
ByVal ,普通传参,传值的。(Value)
ByRef ,引用传参,传址的。(Refer)
ByVal 后面,带有字母lp的变量,默认为传址。引用返回。
对不标识ByVal,ByRef 的变量,VB默认为传址。引用返回。
//
传值、传址的解释:
传值是把一个具体的数值,传递给函数或过程。
传址是把一个存放数据的内存地址,传递给函数或过程。
VB默认使用 传址方式_来传递参数。在代码中,ByRef 关键字可以省略。
//
lp的解释:
l是long的缩写,代表通用类型。
p是point的缩写,指向的,指针类型的。
用字母lp,标识该参数是传址类型。
//
WIN32_API的参数类型,凡是引用返回的参数(传址),
都对应tc_dllcall参数的p类型。必须使用带p开头的。
=======================================================
例子:
ByRef m1 As Integer,
关键字ByRef,标识为传址。
m1,变量名。
As Integer,整型。
在函数定义行中, m1以传址的方式,传递参数。
.
ByVal m2 As Integer,
关键字ByVal,标识为传值。
m2,变量名。
As Integer,整型。
在函数定义行中, m2以传值的方式,传递参数。
=======================================================

在tc中,api的调用格式:
dllcall("dll路径","返回值类型","函数名",
"参数类型",参数名, "…",…)
调用系统dll,省略路径。调用第三方的dll,必须带路径。
"dll路径":"kernel32.dll"
"返回值类型":"long"
"函数名":"GetFileTime"
//参数类型的标识符,必须带引号。实参不用。
"参1数据类型":"long"
参数名:hFile
"参2数据类型":"pstruct"
参数名:f创建
"参3数据类型":"pstruct"
参数名:f访问
"参4数据类型":"pstruct"
参数名:f改写
按VB声明,套着用就行。
//
var hFile = 文件打开("文件的绝对路径","读写|文件要存在")
var bool_va, f创建, f访问, f改写
bool_va = dllcall("kernel32.dll","long","GetFileTime", "long",hFile, "pstruct",f创建, "pstruct",f访问, "pstruct",f改写)
traceprint(f创建)
traceprint(f访问)
traceprint(f改写)
文件关闭(hFile)
=======================================================
测试时发现点问题。FILETIME是结构体,pstruct是结构体传址,调用GetFileTime必先定义这个结构体。
tc大成群:433286131
本贴记录在:tc简单开发吧,精品区2,编程八**。
//
重点:
WIN32_API的参数类型。WIN32传址类型的参数,
都对应tc_dllcall的p类型参数。必须使用带p开头的。


回复

使用道具 举报

发表于 2017-6-17 22:18:48 | 显示全部楼层
顶一下吧
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-28 13:54 , Processed in 0.029003 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表