pb+api实际应用 联系客服

发布时间 : 星期一 文章pb+api实际应用更新完毕开始阅读

FUNCTION ulong FindNextFile(ulong hFindFile,ref stc_find_data lpFindFileData) LIBRARY \FUNCTION ulong FileTimeToDosDateTime(ref stc_filetime lpFileTime,ref long lpFatDate,ref long lpFatTime) LIBRARY \

FUNCTION ulong DosDateTimeToFileTime(ulong wFatDate,ulong wFatTime,ref stc_filetime lpFileTime) LIBRARY \

public function datetime of_get_file_writetime (string as_filename);/*函数作用:获取文件的最后写操作时间

参数: as_filename string 文件名,需绝对文件路径 返回值:datetime */ long ll_code

datetime ldt_filedatetime long lul_date,lul_time

int lui_year,lui_month,lui_day,lui_hour,lui_minute,lui_second stc_find_data ls_file

ll_code=findfirstfile(as_filename,ls_file)//查找文件 findclose(ll_code)

ldt_filedatetime=datetime(ls_file.w_time)//文件的最后写入时间 if ll_code=-1 then

setnull(ldt_filedatetime) else

filetimetodosdatetime (ls_file.w_time,lul_date,lul_time)//转换dos时间为powerbuilder的日期、时间 lui_day=mod(lul_date,32)

lui_month=mod(lul_date,512)/32 if lui_month=0 then lui_month=1 end if

lui_year=lul_date/512+1980 lui_second=mod(lul_time,32)*2 lui_minute=mod(lul_time,2048)/32 lui_hour=(lul_time)/2048 + 8 if lui_hour>=24 then lui_hour=lui_hour - 24

ldt_filedatetime=datetime(relativedate(date(lui_year,lui_month,lui_day),1),time(lui_hour,lui_minute,lui_second)) else

ldt_filedatetime=datetime(date(lui_year,lui_month,lui_day),time(lui_hour,lui_minute,lui_second)) end if end if

return ldt_filedatetime end function

public function datetime of_get_file_createtime (string as_filename);/*函数作用:获取文件的创建时间

参数: as_filename string 文件名,需绝对文件路径 返回值:datetime */ long ll_code

datetime ldt_filedatetime long lul_date,lul_time

int lui_year,lui_month,lui_day,lui_hour,lui_minute,lui_second stc_find_data ls_file

ll_code=findfirstfile(as_filename,ls_file) findclose(ll_code)

ldt_filedatetime=datetime(ls_file.c_time) if ll_code=-1 then

setnull(ldt_filedatetime) else

filetimetodosdatetime (ls_file.c_time,lul_date,lul_time) lui_day=mod(lul_date,32)

lui_month=mod(lul_date,512)/32 if lui_month=0 then lui_month=1 end if

lui_year=lul_date/512+1980 lui_second=mod(lul_time,32)*2 lui_minute=mod(lul_time,2048)/32 lui_hour=(lul_time)/2048 + 8 if lui_hour>=24 then lui_hour=lui_hour - 24

ldt_filedatetime=datetime(relativedate(date(lui_year,lui_month,lui_day),1),time(lui_hour,lui_minute,lui_second)) else

ldt_filedatetime=datetime(date(lui_year,lui_month,lui_day),time(lui_hour,lui_minute,lui_second)) end if end if

return ldt_filedatetime end function

public function datetime of_get_file_accesstime (string as_filename);/*函数作用:获取文件的最后访问时间

参数: as_filename string 文件名,需绝对文件路径 返回值:datetime */ long ll_code

datetime ldt_filedatetime long lul_date,lul_time

int lui_year,lui_month,lui_day,lui_hour,lui_minute,lui_second

stc_find_data ls_file

ll_code=findfirstfile(as_filename,ls_file) findclose(ll_code)

ldt_filedatetime=datetime(ls_file.a_time) if ll_code=-1 then

setnull(ldt_filedatetime) else

filetimetodosdatetime (ls_file.a_time,lul_date,lul_time) lui_day=mod(lul_date,32)

lui_month=mod(lul_date,512)/32 if lui_month=0 then lui_month=1 end if

lui_year=lul_date/512+1980 lui_second=mod(lul_time,32)*2 lui_minute=mod(lul_time,2048)/32 lui_hour=(lul_time)/2048 + 8 if lui_hour>=24 then lui_hour=lui_hour - 24

ldt_filedatetime=datetime(relativedate(date(lui_year,lui_month,lui_day),1),time(lui_hour,lui_minute,lui_second)) else

ldt_filedatetime=datetime(date(lui_year,lui_month,lui_day),time(lui_hour,lui_minute,lui_second)) end if end if

return ldt_filedatetime end function

24、清除开始菜单中“我的文档”的列表文件 清除开始菜单中“我的文档”的列表文件

在“任务栏 属性”的“开始菜单程序”中有一个“清除”按钮,用于清除“我的文档”所列出的最近打开的文件列表。

在Powerbuilder应用程序中如何实现这一功能呢?

首先我们来理解Windows是通过什么方式在文档中添加列表文件的。

在Windows中,当我们打开某些类型的文件时,均在开始菜单的“我的文档”中添加以该文件名命名的快捷方式。其实这

调用了shell32.dll文件所提供的函数SHAddToRecentDocs。此函数顾名思义是专门用来往开始菜单中“我的文档”添加列

表文件的。Powerbuilder调用它的相应格式为: string NewFile

NewFile = \

SHAddToRecentDocs(2,NewFile) //注释:添加项目

如果我们反其道而行之,能不能让它清除列表文件而不是添加新项目呢。请看如下代码:

//注释:外部函数引用声明

Subroutine SHAddToRecentDocs(long uFlags,string pv ) Library \

//注释:给工程添加一个按钮,其单击事件的代码为: w_example.cb_1.clicked: string ls_temp setnull(ls_temp)

SHAddToRecentDocs(2,ls_temp)// 注释:清除

25、用Semaphore检测运行实例的个数