//
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)
分享到:
相关推荐
此示例展示了如何设置`SHFILEOPSTRUCT`结构体并调用`SHFileOperation`函数。这里通过组合多个标志位来实现完全静默的操作,即不显示任何对话框或错误提示。 #### 注意事项 1. **编码问题**: 在设置路径时,需确保...
VB利用SHFileOperation调用系统对话框实现对文件拷贝、删除、重命名
在Windows编程中,有时我们需要实现类似Windows资源管理器的功能,比如复制文件或把文件移至回收站。这时,我们可以利用Windows ...同时,掌握这种底层API的调用,也能帮助开发者更好地理解和控制系统的文件操作行为。
### VC 移动、复制、删除文件(SHFileOperation)技术汇总 在Windows编程中,进行文件操作是一项基本且常见的任务。本篇文章将详细介绍如何利用`SHFileOperation`函数来进行文件移动、复制以及删除等操作,并对代码...
通过调用SHFileOperation,开发者可以实现与系统资源管理器相似的文件操作功能。 首先,我们要理解SHFileOperation的函数原型: ```cpp int SHFileOperation( _Inout_ LPSHFILEOPSTRUCT lpFileOp ); ``` 其中,`...
使用API函数SHFileOperation,这个函数可以同时拷贝、删除、改名或移动多个文件,甚至整个目录。如果你愿意,还可以显示相应的动画对话框,功能十分强大。SHFileOperation的参数是一个SHFILEOPSSTRUCT结构。这个结构...
4. **对话框的使用**:调用SHFileOperation会显示一个标准的Windows文件操作对话框,用户可以在其中看到复制进度,并可以选择是否覆盖已存在的文件。 描述中提到的“调用Windows自带的复制文件对话框API来复制文件...
3. **调用函数**:配置好`SHFILEOPSTRUCTA`结构体后,你可以调用`SHFileOperationA`执行操作: ```c++ SHFileOperationA(&fileOp); ``` 4. **操作类型**:`SHFileOperationA`支持多种操作类型,如`FO_COPY`(复制...
总结来说,通过VC++调用SHFileOperation API函数,我们可以方便地将文件或文件夹复制到系统临时目录,同时还能灵活控制操作行为。此方法适用于需要在后台静默复制文件的场合,或者在用户交互较少的应用中。注意处理...
此行代码声明了一个调用`SHFileOperation`函数的方法,该函数位于`shell32.dll`库中,并接受一个指向`SHFILEOPSTRUCT`类型的指针作为参数。 #### 3.3 设置FO_DELETE 和 FOF_ALLOWUNDO ```vb Public Const FO_DELETE...
在执行删除操作时,需要调用SHFileOperation函数,并将SHFileOpStruct结构体作为参数传递给该函数。如果删除操作成功,SHFileOperation函数将返回0,否则将返回错误代码。 方法二:使用自定义过程删除文件夹 第二...
`调用了`SHFileOperation`函数,传入了配置好的`sfo`结构体。这将根据`sfo`中指定的参数执行移动操作。 ### 扩展知识点 除了上述基础操作外,了解一些扩展知识点对于高级应用的开发至关重要: 1. **错误处理**:`...
- 调用了 `SHFileOperation` 函数,复制文件 `"E:\Linux\linux-2.2.2.tar.gz"` 到 `"C:\"` 目录下。 通过以上分析,我们可以看到,在Windows 9x环境下,通过VBA结合Windows API函数,可以轻松实现复杂的文件操作...
为此,我们可以添加一个“取消”按钮,并监听其点击事件,适时调用`CancelFileOperations` API来中断`SHFileOperation`。 综上所述,实现"易语言进度显示复制文件夹"涉及了易语言的控件使用、API调用、多线程编程、...
在提供的代码片段中,核心功能是通过调用`SHFileOperation`函数来实现文件夹的复制。`SHFileOperation`函数是Windows Shell API的一部分,用于执行各种文件操作,如移动、复制和删除等。具体来说,`SHFileOperation`...
开发者可能需要使用P/Invoke(平台调用)技术,通过DllImport特性来调用Windows API中的`SHFileOperation`函数,这个函数可以执行各种文件操作,包括清空回收站。 在C#中,P/Invoke允许我们调用非托管代码,也就是C...
调用`SHFileOperation`时,需要提供一个`SHFILEOPSTRUCT`结构体作为参数,该结构体包含了文件操作的相关信息。`SHFILEOPSTRUCT`的定义如下: ```cpp typedef struct _SHFILEOPSTRUCT { HWND hwnd; UINT wFunc; ...
3. `SHFileOperation`参数设置:在调用`SHFileOperation`时,需要传递一个结构体`FILEOPSTRUCT`,其中包含了操作类型(FO_DELETE表示删除)、是否通过回收站(FOF_SILENT和FOF_ALLOWUNDO组合)以及源文件和目标文件...
这涉及到Windows API的调用,特别是`SHFileOperation`和`SHEmptyRecycleBin`两个函数。 1. **易语言与Windows API**: 易语言虽然有自己的内建函数和结构,但为了实现某些高级功能,如与操作系统更深入的交互,...
然后,我们可以通过以下代码来设置`SHFILEOPSTRUCT`结构体,并调用`SHFileOperation`函数: ```vb Dim FileOp As SHFILEOPSTRUCT FileOp.hWnd = 0 FileOp.wFunc = &H10 ' FO_DELETE 表示删除 FileOp.pFrom = "C:\...