工控编程吧
标题:
上位机MFC如何使用Shell操作文件
[打印本页]
作者:
qq263946146
时间:
2019-8-2 14:45
标题:
上位机MFC如何使用Shell操作文件
文件的复制,移动等操作可以直接使用一个函数SHFileOperation来实现。例如复制一个文件:
void CDemoDlg::OnCopyFile()
{
CString strSrcFileName = _T("C:\\Demo.dat");
TCHAR szFrom[MAX_PATH];
for (int n = 0; n < MAX_PATH; n++)
{
szFrom[n] = '\0';
}
StrCat(szFrom, strSrcFileName);
CString strDestFileName = _T("C:\\Copy of Demo.dat");
TCHAR szTo[MAX_PATH];
for (n = 0; n < MAX_PATH; n++)
{
szTo[n] = '\0';
}
StrCat(szTo, strDestFileName);
//复制文件操作
SHFILEOPSTRUCT FileOp;
FileOp.hwnd = NULL;
FileOp.wFunc = FO_COPY;
FileOp.pFrom = szFrom;
FileOp.pTo = szTo;
FileOp.fFlags = FOF_SILENT;
if (SHFileOperation(&FileOp) == 0)
{
AfxMessageBox(_T("复制文件成功。"));
}
else
{
AfxMessageBox(_T("复制文件失败。"));
}
}
复制代码
移动一个文件:
void CDemoDlg::OnMoveFile()
{
CString strSrcFileName = _T("C:\\Demo.dat");
TCHAR szFrom[MAX_PATH];
for (int n = 0; n < MAX_PATH; n++)
{
szFrom[n] = '\0';
}
StrCat(szFrom, strSrcFileName);
CString strDestFileName = _T("D:\");
TCHAR szTo[MAX_PATH];
for (n = 0; n < MAX_PATH; n++)
{
szTo[n] = '\0';
}
StrCat(szTo, strDestFileName);
//移动文件操作
SHFILEOPSTRUCT FileOp;
FileOp.hwnd = NULL;
FileOp.wFunc = FO_MOVE;
FileOp.pFrom = szFrom;
FileOp.pTo = szTo;
FileOp.fFlags = FOF_SILENT;
if (SHFileOperation(&FileOp) == 0)
{
AfxMessageBox(_T("移动文件成功。"));
}
else
{
AfxMessageBox(_T("移动文件失败。"));
}
}
复制代码
删除一个文件
void CDemoDlg::OnDeleteFile()
{
CString strSrcFileName = _T("C:\\Demo.dat");
TCHAR szFrom[MAX_PATH];
for (int n = 0; n < MAX_PATH; n++)
{
szFrom[n] = '\0';
}
StrCat(szFrom, strSrcFileName);
//删除文件操作
SHFILEOPSTRUCT FileOp;
FileOp.hwnd = NULL;
FileOp.wFunc = FO_DELETE;
FileOp.pFrom = szFrom;
FileOp.pTo = NULL;
FileOp.fFlags = FOF_SILENT;
if (SHFileOperation(&FileOp) == 0)
{
AfxMessageBox(_T("删除文件成功。"));
}
else
{
AfxMessageBox(_T("删除文件失败。"));
}
}
复制代码
重命名一个文件:
void CDemoDlg::OnRenameFile()
{
CString strSrcFileName = _T("C:\\Demo.dat");
TCHAR szFrom[MAX_PATH];
for (int n = 0; n < MAX_PATH; n++)
{
szFrom[n] = '\0';
}
StrCat(szFrom, strSrcFileName);
CString strDestFileName = _T("C:\\New Demo.dat");
TCHAR szTo[MAX_PATH];
for (n = 0; n < MAX_PATH; n++)
{
szTo[n] = '\0';
}
StrCat(szTo, strDestFileName);
//重命名文件操作
SHFILEOPSTRUCT FileOp;
FileOp.hwnd = NULL;
FileOp.wFunc = FO_RENAME;
FileOp.pFrom = szFrom;
FileOp.pTo = szTo;
FileOp.fFlags = FOF_SILENT;
if (SHFileOperation(&FileOp) == 0)
{
AfxMessageBox(_T("重命名文件成功。"));
}
else
{
AfxMessageBox(_T("重命名文件失败。"));
}
}
复制代码
我们可以看到
SHFileOperation传递进去的是一个
SHFILEOPSTRUCT 结构体。
通过修改结构体实例的成员变量
SHFILEOPSTRUCT FileOp;
FileOp.wFunc = FO_RENAME。
就可以实现不同的功能。
函数执行成功与否可以通过其返回值进行判断。为0表示成功执行。
[MFC408]1[/MFC408]
[weixinlianxi]1[/weixinlianxi]
欢迎光临 工控编程吧 (https://www.gkbc8.com/)
Powered by Discuz! X3.4