如何通过PB显示Windows文件复制进度对话框?

时间:2009-08-18 09:22:09

标签: api powerbuilder

我使用了CopyFilea和ShFileOperation函数。 CopyFileA它复制了文件(大型繁琐的数据)。但它没有显示复制进度,也在SHFileOperation api中尝试了这显示错误。

PB版本是10.2.0 build 7516

错误消息:错误调用外部函数%s

任何身体请给我一个解决方案?

2 个答案:

答案 0 :(得分:2)

a discussion of SHFileOperation on sybase.public.powerbuilder.general。此代码块显示了如何正确设置结构,对于这种情况下的删除操作 - 它有帮助吗?

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

//inside a function call:
// Arguments:    as_SourceFile - the file(s) to delete.
//               aui_flags     - file operation flags (0 - default)
//               aw_requestor  - the requesting window

os_shfileopstruct       lstr_FileOp
Integer li_rc

lstr_FileOp.hWnd                  = Handle(aw_requestor)
lstr_FileOp.wFunc                 = FO_DELETE
lstr_FileOp.pFrom                 = Blob( as_SourceFile + Space(2) )
BlobEdit( lstr_FileOp.pFrom, Len( as_sourcefile ) + 1, Char(0) )
BlobEdit( lstr_FileOp.pFrom, Len( as_sourcefile ) + 2, Char(0) )
lstr_FileOp.fFlags                = aui_flags
lstr_FileOp.hNameMappings         = 0
lstr_FileOp.lpszProgressTitle     = Space(10)

li_rc = SHFileOperationA( lstr_FileOp )
IF li_rc <> 0 THEN
        IF NOT IsNull( lstr_FileOp ) THEN
                IF lstr_FileOp.bAnyOperationsAborted = 1 THEN
                        RETURN 0
                END IF
        END IF
ELSE
        -1
END IF

RETURN 1 

来自sybase.public.powerbuilder.general

答案 1 :(得分:0)

您的操作系统是什么? SHFileOperation已在Windows Vista中替换为IFileOperation