`
buliedian
  • 浏览: 1258892 次
  • 性别: Icon_minigender_2
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

pb调用SHFileOperation出错的问题

 
阅读更多

//

PB11里直接按网上的写法。执行是有OK有错误。还是pfrom和pto末尾需要两个null字符的问题。本想在string后面直接加两个字符,也是不行(因为字符串后面你加再多的"\0"都不起作用,null本来就是字符串的结束符--我是这样理解的)。后面看到blob的例子。方才搞定。看来对数据块的引用传递时,还是blob好。另外记得EncodingANSI!

声明:

Function long SHFileOperation(ref SHFILEOPSTRUCT lpFileOp) Library "shell32.dll" Alias FOR "SHFileOperationA;ansi"

//变量

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

//stru

type SHFILEOPSTRUCT from structure
uLong hwnd
uLong wFunc
blob pFrom
blob pTo
long fFlags
long fAnyOperationsAborted
long hNameMappings
string lpszProgressTitle
end type

//func

//public function long of_rename_file (long lfrmhwnd, string sfrom, string sto, boolean fshowprogress)

SHFILEOPSTRUCT udtPath

udtPath.hwnd = lfrmhWnd
udtPath.wFunc = FO_RENAME

udtPath.pFrom = blob(sfrom,EncodingANSI!) + blob(char(0),EncodingANSI!) + blob(char(0),EncodingANSI!)
udtPath.pTo = blob(sto,EncodingANSI!) + blob(char(0),EncodingANSI!) + blob(char(0),EncodingANSI!)

long ll_bitvalues[]

ll_bitvalues[1] = FOF_NOCONFIRMATION
ll_bitvalues[2] = FOF_NOERRORUI
If fShowProgress then
ll_bitvalues[3] = 0
else
ll_bitvalues[3] = FOF_SILENT
end if

udtPath.fFlags = gf_bit_or(ll_bitvalues)

return SHFileOperation(udtPath)

分享到:
评论

相关推荐

    PB使用SHFileOperation函数复制文件夹(文件)API

    此示例展示了如何设置`SHFILEOPSTRUCT`结构体并调用`SHFileOperation`函数。这里通过组合多个标志位来实现完全静默的操作,即不显示任何对话框或错误提示。 #### 注意事项 1. **编码问题**: 在设置路径时,需确保...

    VB利用SHFileOperation调用系统对话框实现对文件拷贝、删除、重命名

    VB利用SHFileOperation调用系统对话框实现对文件拷贝、删除、重命名

    调用 SHFileOperation 函数实现复制文件或删除到回收站(6KB)...

    在Windows编程中,有时我们需要实现类似Windows资源管理器的功能,比如复制文件或把文件移至回收站。这时,我们可以利用Windows ...同时,掌握这种底层API的调用,也能帮助开发者更好地理解和控制系统的文件操作行为。

    VC 移动,复制,删除文件(SHFileOperation)总集

    ### VC 移动、复制、删除文件(SHFileOperation)技术汇总 在Windows编程中,进行文件操作是一项基本且常见的任务。本篇文章将详细介绍如何利用`SHFileOperation`函数来进行文件移动、复制以及删除等操作,并对代码...

    SHFileOperation文件操作

    通过调用SHFileOperation,开发者可以实现与系统资源管理器相似的文件操作功能。 首先,我们要理解SHFileOperation的函数原型: ```cpp int SHFileOperation( _Inout_ LPSHFILEOPSTRUCT lpFileOp ); ``` 其中,`...

    vb SHFileOperation 实现复制文件夹 示例源码

    使用API函数SHFileOperation,这个函数可以同时拷贝、删除、改名或移动多个文件,甚至整个目录。如果你愿意,还可以显示相应的动画对话框,功能十分强大。SHFileOperation的参数是一个SHFILEOPSSTRUCT结构。这个结构...

    调用Windows自带的复制文件对话框API来复制文件

    4. **对话框的使用**:调用SHFileOperation会显示一个标准的Windows文件操作对话框,用户可以在其中看到复制进度,并可以选择是否覆盖已存在的文件。 描述中提到的“调用Windows自带的复制文件对话框API来复制文件...

    利用API函数SHFileOperationA实现文件操作

    3. **调用函数**:配置好`SHFILEOPSTRUCTA`结构体后,你可以调用`SHFileOperationA`执行操作: ```c++ SHFileOperationA(&fileOp); ``` 4. **操作类型**:`SHFileOperationA`支持多种操作类型,如`FO_COPY`(复制...

    VC++ 复制文件到指定系统临时目录

    总结来说,通过VC++调用SHFileOperation API函数,我们可以方便地将文件或文件夹复制到系统临时目录,同时还能灵活控制操作行为。此方法适用于需要在后台静默复制文件的场合,或者在用户交互较少的应用中。注意处理...

    精彩编程与编程技巧-移动文件到回收站...

    此行代码声明了一个调用`SHFileOperation`函数的方法,该函数位于`shell32.dll`库中,并接受一个指向`SHFILEOPSTRUCT`类型的指针作为参数。 #### 3.3 设置FO_DELETE 和 FOF_ALLOWUNDO ```vb Public Const FO_DELETE...

    Delphi删除文件夹.pdf

    在执行删除操作时,需要调用SHFileOperation函数,并将SHFileOpStruct结构体作为参数传递给该函数。如果删除操作成功,SHFileOperation函数将返回0,否则将返回错误代码。 方法二:使用自定义过程删除文件夹 第二...

    mfc移动文件夹

    `调用了`SHFileOperation`函数,传入了配置好的`sfo`结构体。这将根据`sfo`中指定的参数执行移动操作。 ### 扩展知识点 除了上述基础操作外,了解一些扩展知识点对于高级应用的开发至关重要: 1. **错误处理**:`...

    精彩编程与编程技巧-提取Win9x拷贝的动画...

    - 调用了 `SHFileOperation` 函数,复制文件 `"E:\Linux\linux-2.2.2.tar.gz"` 到 `"C:\"` 目录下。 通过以上分析,我们可以看到,在Windows 9x环境下,通过VBA结合Windows API函数,可以轻松实现复杂的文件操作...

    易语言进度显示复制文件夹

    为此,我们可以添加一个“取消”按钮,并监听其点击事件,适时调用`CancelFileOperations` API来中断`SHFileOperation`。 综上所述,实现"易语言进度显示复制文件夹"涉及了易语言的控件使用、API调用、多线程编程、...

    vb复制整个文件夹到指定位置

    在提供的代码片段中,核心功能是通过调用`SHFileOperation`函数来实现文件夹的复制。`SHFileOperation`函数是Windows Shell API的一部分,用于执行各种文件操作,如移动、复制和删除等。具体来说,`SHFileOperation`...

    ClearRecycle_C#源码_

    开发者可能需要使用P/Invoke(平台调用)技术,通过DllImport特性来调用Windows API中的`SHFileOperation`函数,这个函数可以执行各种文件操作,包括清空回收站。 在C#中,P/Invoke允许我们调用非托管代码,也就是C...

    复制文件夹

    调用`SHFileOperation`时,需要提供一个`SHFILEOPSTRUCT`结构体作为参数,该结构体包含了文件操作的相关信息。`SHFILEOPSTRUCT`的定义如下: ```cpp typedef struct _SHFILEOPSTRUCT { HWND hwnd; UINT wFunc; ...

    易语言源码通过回收站删除文件.zip

    3. `SHFileOperation`参数设置:在调用`SHFileOperation`时,需要传递一个结构体`FILEOPSTRUCT`,其中包含了操作类型(FO_DELETE表示删除)、是否通过回收站(FOF_SILENT和FOF_ALLOWUNDO组合)以及源文件和目标文件...

    易语言通过回收站删除文件

    这涉及到Windows API的调用,特别是`SHFileOperation`和`SHEmptyRecycleBin`两个函数。 1. **易语言与Windows API**: 易语言虽然有自己的内建函数和结构,但为了实现某些高级功能,如与操作系统更深入的交互,...

    VB软件清空回收站代码和软件参考

    然后,我们可以通过以下代码来设置`SHFILEOPSTRUCT`结构体,并调用`SHFileOperation`函数: ```vb Dim FileOp As SHFILEOPSTRUCT FileOp.hWnd = 0 FileOp.wFunc = &H10 ' FO_DELETE 表示删除 FileOp.pFrom = "C:\...

Global site tag (gtag.js) - Google Analytics