王朝百科
分享
 
 
 

shfileoperation

王朝百科·作者佚名  2010-04-16  
宽屏版  字体: |||超大  

SHFileOperation

函数功能描述:文件操作,与 Shell 的动作相同.

函数原型:

#include<shellapi.h>

WINSHELLAPI int WINAPI SHFileOperation(LPSHFILEOPSTRUCT lpFileOp);

参数:

typedef struct _SHFILEOPSTRUCT

{

HWND hwnd; //父窗口句柄

UINT wFunc; //要执行的动作

LPCTSTR pFrom; //源文件路径,可以是多个文件

LPCTSTR pTo; //目标路径,可以是路径或文件名

FILEOP_FLAGS fFlags; //标志,附加选项

BOOL fAnyOperationsAborted; //是否可被中断

LPVOID hNameMappings; //文件映射名字,可在其它 Shell 函数中使用

LPCTSTR lpszProgressTitle; // 只在 FOF_SIMPLEPROGRESS 时,指定对话框的标题。

} SHFILEOPSTRUCT, FAR *LPSHFILEOPSTRUCT;

===================

vb.net

Public Structure SHFILEOPSTRUCT

Dim hwnd As IntPtr

Dim wFunc As Integer

Dim pFrom As String

Dim pTo As String

Dim fFlags As Short

Dim fAnyOperationsAborted As Integer

Dim hNameMappings As IntPtr

Dim lpszProgressTitle As String

End Structure

Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (ByRef lpFileOp As SHFILEOPSTRUCT) As Integer

======================

vb:

Type SHFILEOPSTRUCT

hWnd As Long

wFunc As Long

pFrom As String '必须用 pFrom & vbNullChar & vbNullChar

pTo As String '同pFrom

fFlags As Integer

fAnyOperationsAborted As Boolean

hNameMappings As Long

lpszProgressTitle As String

End Type

Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

=======================

wFunc 可以为:

/FO_MOVE 0x0001 移动文件

FO_COPY 0x0002 复制文件

FO_DELETE 0x0003 删除文件,只使用 pFrom

FO_RENAME 0x0004 文件重命名

fFlags可以为:

FOF_MULTIDESTFILES 0x0001 //pTo 指定了多个目标文件,而不是单个目录

FOF_CONFIRMMOUSE 0x0002

FOF_SILENT 0x00044 // 不显示一个进度对话框

FOF_RENAMEONCOLLISION 0x0008 // 碰到有抵触的名字时,自动分配前缀

FOF_NOCONFIRMATION 0x0010 // 不对用户显示提示

FOF_WANTMAPPINGHANDLE 0x0020 // 填充 hNameMappings 字段,必须使用 SHFreeNameMappings 释放

FOF_ALLOWUNDO 0x0040 // 允许撤销

FOF_FILESONLY 0x0080 // 使用 *.* 时, 只对文件操作

FOF_SIMPLEPROGRESS 0x0100 // 简单进度条,意味者不显示文件名。

FOF_NOCONFIRMMKDIR 0x0200 // 建新目录时不需要用户确定

FOF_NOERRORUI 0x0400 // 不显示出错用户界面

FOF_NOCOPYSECURITYATTRIBS 0x0800 // 不复制 NT 文件的安全属性

FOF_NORECURSION 0x1000 // 不递归目录

返回值:

函数成功返回 0 ,失败返回非 0 。

例子:

1. 将 C:Test.txt 拷贝到 D:

SHFILEOPSTRUCT lpsh;

ZeroMemory(&lpsh,sizeof(lpsh));

lpsh.hwnd= HWND_DESKTOP;

lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;

lpsh.wFunc=FO_COPY; // FO_MOVE 则是移动

lpsh.pFrom= "C:Test.txt";

lpsh.pTo = "D:";

if( 0 != SHFileOperation(&lpsh))

{

AfxMessageBox("复制文件出错,请检查");

return ;

}

2. 删除 D:Test.txt

SHFILEOPSTRUCT lpsh;

ZeroMemory(&lpsh,sizeof(lpsh));

lpsh.hwnd= HWND_DESKTOP;

lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;

lpsh.wFunc=FO_DELETE;

lpsh.pFrom= "D:Test.txt";

if( 0 != SHFileOperation(&lpsh))

{

AfxMessageBox("删除文件出错,请检查");

return ;

}

3.重命名

SHFILEOPSTRUCT lpsh;

ZeroMemory(&lpsh,sizeof(lpsh));

lpsh.hwnd= HWND_DESKTOP;

lpsh.fFlags=FOF_NOCONFIRMATION|FOF_SIMPLEPROGRESS ;

lpsh.wFunc=FO_RENAME;

lpsh.pFrom= "D:Test.txt";

lpsh.pTo = "D:Test2.txt";

if( 0 != SHFileOperation(&lpsh))

{

AfxMessageBox("重命名文件出错!");

return ;

}

4.VB

Public Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

Public Const FO_COPY = &H2

Public Const FOF_ALLOWUNDO = &H40

Public Sub ShellCopyFile(Source As String, Dest As String)

Dim result As Long

Dim fileop As SHFILEOPSTRUCT

With fileop

.hwnd = 0

.wFunc = FO_COPY

.pFrom = Source & vbNullChar & vbNullChar

.pTo = Dest & vbNullChar & vbNullChar

.fFlags = FOF_ALLOWUNDO

End With

result = SHFileOperation(fileop)

If result <> 0 Then

'Msgbox the error that occurred in the API.

MsgBox Err.LastDllError, vbCritical Or vbOKOnly

Else

If fileop.fAnyOperationsAborted <> 0 Then

MsgBox "Operation Failed", vbCritical Or vbOKOnly

End If

End If

End Sub

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
如何用java替换看不见的字符比如零宽空格&#8203;十六进制U+200B
 干货   2023-09-10
网页字号不能单数吗,网页字体大小为什么一般都是偶数
 干货   2023-09-06
java.lang.ArrayIndexOutOfBoundsException: 4096
 干货   2023-09-06
Noto Sans CJK SC字体下载地址
 干货   2023-08-30
window.navigator和navigator的区别是什么?
 干货   2023-08-23
js获取referer、useragent、浏览器语言
 干货   2023-08-23
oscache遇到404时会不会缓存?
 干货   2023-08-23
linux下用rm -rf *删除大量文件太慢怎么解决?
 干货   2023-08-08
刀郎新歌破世界纪录!
 娱乐   2023-08-01
js实现放大缩小页面
 干货   2023-07-31
生成式人工智能服务管理暂行办法
 百态   2023-07-31
英语学习:过去完成时The Past Perfect Tense举例说明
 干货   2023-07-31
Mysql常用sql命令语句整理
 干货   2023-07-30
科学家复活了46000年前的虫子
 探索   2023-07-29
英语学习:过去进行时The Past Continuous Tense举例说明
 干货   2023-07-28
meta name="applicable-device"告知页面适合哪种终端设备:PC端、移动端还是自适应
 干货   2023-07-28
只用css如何实现打字机特效?
 百态   2023-07-15
css怎么实现上下滚动
 干货   2023-06-28
canvas怎么画一个三角形?
 干货   2023-06-28
canvas怎么画一个椭圆形?
 干货   2023-06-28
canvas怎么画一个圆形?
 干货   2023-06-28
canvas怎么画一个正方形?
 干货   2023-06-28
中国河南省郑州市金水区蜘蛛爬虫ip大全
 干货   2023-06-22
javascript简易动态时间代码
 干货   2023-06-20
感谢员工的付出和激励的话怎么说?
 干货   2023-06-18
 
>>返回首页<<
 
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有