MFC シェルファイル操作 SHFileOperation

SHFileOperation関数は、ファイル操作を行うネイティブの関数で、ファイルのコピー、移動、削除、フォルダの作成などの操作を実行できます。以下に、SHFileOperation関数を使用してファイルのコピーを行うサンプルコードを示します。

#include <afx.h>
#include <afxwin.h>
#include <Shlobj.h>
#include <ShellAPI.h>
int main()
{
// 初始化MFC
AfxWinInit(::GetModuleHandle(NULL), NULL, ::GetCommandLine(), 0);
// 设置操作参数
SHFILEOPSTRUCT fileOp;
ZeroMemory(&fileOp, sizeof(fileOp));
fileOp.wFunc = FO_COPY;
fileOp.pFrom = _T("C:\\Path\\To\\SourceFile.txt\0"); // 源文件路径
fileOp.pTo = _T("C:\\Path\\To\\Destination\0"); // 目标文件夹路径
fileOp.fFlags = FOF_FILESONLY; // 仅复制文件,不复制文件夹
// 执行文件复制操作
int result = SHFileOperation(&fileOp);
// 检查操作结果
if (result == 0)
{
// 操作成功
AfxMessageBox(_T("文件复制成功"));
}
else
{
// 操作失败
AfxMessageBox(_T("文件复制失败"));
}
return 0;
}

上記のサンプルコードで、まずAfxWinInit関数でMFCを初期化しています。 次に、ファイル操作のパラメータ(操作タイプ、元ファイルパス、宛先フォルダパス、フラグ) を設定したSHFILEOPSTRUCT構造体を定義します。 最後に、SHFileOperation関数を呼び出し、ファイルコピー操作を実行し、戻り値から操作結果を判断します。

注意書き MFCのシェルファイル操作関数を使う場合にはプログラム内でafx.h/afxwin.h/Shlobj.h/ShellAPI.hというヘッダーファイルを含める必要がある上にMFCフレームワークの初期化が必要であり、更にコンパイルオプションをMFC静的ライブラリを使用するように設定する必要がある。

bannerAds