PB利用API-SHFileOperation 文件操作函数 实现多文件及文件夹的删除复制等操作

本文介绍了如何使用PB中的API函数SHFileOperation来增强文件操作功能,特别是对于多文件和文件夹的删除、复制、移动等操作。作者提供了一个适用于PB10及以上版本的对象封装,解决了从ANSI到UNICODE转换的问题,通过示例代码展示了如何使用该对象进行具体操作。
摘要由CSDN通过智能技术生成

        PB的文件操作能力比较弱,自带的一些函数功能太简单,一遇上些稍微复杂些的需求(如多文件删除,文件夹的删除等)并不是非常好用,所以利用windows的API来实现相应的功能就成了最好的选择,而这其中,SHFileOperation又是最好用的,其实我说的这些并不新鲜,网上也有相关的例子,但是网上现在能找到的例程都是PB10以前的,由于从PB10开始,编码从ANSI改成了UNICODE,所以在参数的传递上,以前的一些东西要稍作下改变才可以继续使用,见到有些朋友对此有疑问,特封装了一对象(PB10以后适用),免得大家重复劳动,浪费时间,而曾经尝试过类似的工作但没有成功的朋友,请注意代码中BLOB,BLOBEDIT,LENA的使用方法,希望对大家理解ansi和unicode之间的转换能有些帮助。



*******************nvo_fileoperation,用户对象,封装了文件操作的相关函数**************************************

forward

global type nvo_fileoperation from nonvisualobject
end type
type str_operation from structure within nvo_fileoperation
end type
type str_fileoperation from structure within nvo_fileoperation
end type
end forward

type str_fileoperation from structure
        unsignedlong            hwnd
        unsignedlong            wfunc
        blob            pfrom
        blob            pto
        unsignedinteger         fflags
        unsignedlong            banyoperationsaborted
        unsignedlong            hnamemappings
        string          lpszprogresstitle
end type

global type nvo_fileoperation from nonvisualobject
end type
global nvo_fileoperation nvo_fileoperation

type prototypes
//文件操作,SHFileOperation在 Vista 及以后版本中应替换为iFileOperation
Function long  SHFileOperation(ref str_fileoperation lpFileOp)  Library  "shell32.dll"  Alias FOR "SHFileOperationA;ansi"  
end prototypes

type variables
Private  Constant int FO_MOVE  = 1 // &H1
Private  Constant int FO_COPY  = 2 //&H2
Private  Constant int FO_DELETE  =3  //&H3
Private  Constant int FO_RENAME  =4  //&H4
Private  Constant int FOF_NOCONFIRMATION  =16  //&H10
Private  Constant int FOF_SILENT  = 4 //&H4
Private  Constant int FOF_NOERRORUI  = 1024 //&H400  
end variables

forward prototypes
public function integer of_delete (string as_sourcefile[], window aw_requestor, long aui_flags)
public function integer of_copy (string as_sourcefile[], string as_target, window aw_requestor, long aui_flags)
public function integer of_move (string as_sourcefile[], string as_target, window aw_requestor, long aui_flags)
public function integer of_rename (string as_sourcefile, string as_targetfile, window aw_requestor, long aui_flags)
end prototypes

public function integer of_delete (string as_sourcefile[], window aw_requestor, long aui_flags);//====================================================================
// 函数: nvo_fileoperation::of_delete
//--------------------------------------------------------------------
// 描述:
//--------------------------------------------------------------------
// 参数:
//     string    as_sourcefile[]    --需要删除的文件名
//     window    aw_requestor --当前窗口名          
//     long    aui_flags --UI参数(是否显示,是否与用户
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值