首页编程shfileoperation 请教调用 SHFileOperation 进行文件复制重命名的问题

shfileoperation 请教调用 SHFileOperation 进行文件复制重命名的问题

编程之家2023-11-0296次浏览

各位老铁们好,相信很多人对shfileoperation都不是特别的了解,因此呢,今天就来为大家分享下关于shfileoperation以及请教调用 SHFileOperation 进行文件复制重命名的问题的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

shfileoperation 请教调用 SHFileOperation 进行文件复制重命名的问题

请教调用 SHFileOperation 进行文件复制重命名的问题

#include<shellapi.h>

//删除文件或者文件夹

bool DeleteFile(TCHAR* lpszPath)

{

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags= FOF_ALLOWUNDO|//允许放回回收站

shfileoperation 请教调用 SHFileOperation 进行文件复制重命名的问题

FOF_NOCONFIRMATION;//不出现确认对话框

FileOp.pFrom= lpszPath;

FileOp.pTo= NULL;//一定要是NULL

FileOp.wFunc= FO_DELETE;//删除操作

return SHFileOperation(&FileOp)== 0;

}

shfileoperation 请教调用 SHFileOperation 进行文件复制重命名的问题

//复制文件或文件夹

bool CopyFile(TCHAR*pTo,TCHAR*pFrom)

{

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags= FOF_NOCONFIRMATION|//不出现确认对话框

FOF_NOCONFIRMMKDIR//需要时直接创建一个文件夹,不需用户确定

|FOF_SIMPLEPROGRESS;//进度条

FileOp.pFrom= pFrom;

FileOp.pTo= pTo;

FileOp.wFunc= FO_COPY;

return SHFileOperation(&FileOp)== 0;

}

//移动文件或文件夹

bool MoveFile(TCHAR*pTo,TCHAR*pFrom)

{

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags= FOF_NOCONFIRMATION|//不出现确认对话框

FOF_NOCONFIRMMKDIR;//需要时直接创建一个文件夹,不需用户确定

FileOp.pFrom= pFrom;

FileOp.pTo= pTo;

FileOp.wFunc= FO_MOVE;

return SHFileOperation(&FileOp)== 0;

}

//从命名文件或文件夹

bool ReNameFile(TCHAR*pTo,TCHAR*pFrom)

{

SHFILEOPSTRUCT FileOp={0};

FileOp.fFlags= FOF_NOCONFIRMATION;

FileOp.pFrom= pFrom;

FileOp.pTo= pTo;

FileOp.wFunc= FO_RENAME;

FileOp.hwnd= HWND_DESKTOP;

return SHFileOperation(&FileOp)==0;

}

void CShfileopDlg::OnButton1()

{

// TODO: Add your control notification handler code here

CopyFile(_T("c:\\two"),_T("c:\\123"));

ReNameFile(_T("c:\\newtwo"),_T("c:\\123"));

DeleteFile(_T("c:\\newtwo"));

AfxMessageBox(_T("完成"));

}

vb中关于filelistbox控件的问题

这个问题可以这样的解决:在vb6中调试通过。

1:首先在公共模块中:

Option Explicit

Public Const FO_MOVE=&H1

Public Const FO_COPY=&H2

Public Const FO_DELETE=&H3

Public Const FO_RENAME=&H4

Public Const FOF_NOCONFIRMATION=&H10

Public Const FOF_NOCONFIRMMKDIR=&H200

Public Const FOF_ALLOWUNDO=&H40

Type SHFILEOPSTRUCT

hWnd As Long

wFunc As Long

pFrom As String

pTo As String

fFlags As Integer

fAborted As Boolean

hNameMaps As Long

sProgress As String

End Type

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

其次:在frm模块之中:

Private Sub Command1_Click()

Dim SHFileOp As SHFILEOPSTRUCT

SHFileOp.wFunc= FO_COPY

SHFileOp.fAborted= True

SHFileOp.pFrom="F:\MEM\*.*"

SHFileOp.pTo="f:\aa"

SHFileOp.fFlags= FOF_ALLOWUNDO+ FOF_NOCONFIRMATION

SHFileOperation SHFileOp

MsgBox"复制完成"

End Sub

注意:这是后台的一个拷贝,复制的过程当中软件还能操作,但是你要理解vb

的api函数的一些声明和用法,特别是SHFileOperation的用法。

2:FILELISTBOX控件显示文件的时候如何实现双击时删除选定的文件的解决:

在frm之中:一个listbox控件

Option Explicit

Private Const LB_ITEMFROMPOINT=&H1A9

Private Declare Function SendMessage Lib"user32"

Alias"SendMessageA"(ByVal hwnd As Long, ByVal wMsg As Long, ByVal

wParam As Long, lParam As Any) As Long

Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim pos As Long

dim idx As Long

pos= X/ Screen.TwipsPerPixelX+ Y/ Screen.TwipsPerPixelY* 65536

idx= SendMessage(List1.hwnd, LB_ITEMFROMPOINT, 0, ByVal pos)

Kill List1.List(idx)

List1.Refresh

End Sub

注意:Kill List1.List(idx)‘这个地方有可能不会达到你的要求,如果要删

除文件,则你要写全文件的路径,即是:

kill"c:\aaa\"& List1.List(idx)

如果是只是不显示在list中,则只需:List1.RemoveItem(idx)就可以了!

你可以试一试!!!

文章到此结束,如果本次分享的shfileoperation和请教调用 SHFileOperation 进行文件复制重命名的问题的问题解决了您的问题,那么我们由衷的感到高兴!

免费网页空间?免费的网页空间网页制作论坛?制作论坛和制作网页的区别