Visual BasicにおけるShell関数中のSHFileOperationの使い方は?

SHFileOperationはコピー、移動、名前の変更、削除などのファイル操作を実行するための、Windowsオペレーティングシステムのコマンドラインまたはバッチスクリプト内で使用できる関数です。

関数のプロトタイプは次のとおりです。

int SHFileOperation(
  LPSHFILEOPSTRUCT lpFileOp
);

lpFileOpパラメータは、ファイル操作を実行する際に必要な情報(ソースファイルのパス、ターゲットファイルのパス、操作の種類など)を含むSHFILEOPSTRUCT構造体を指すポインタです。

SHFileOperation 関数を利用するには、事前に SHFILEOPSTRUCT 構造体を初期化し、適切なパラメータを設定する必要があります。以下に例を示します。

SHFILEOPSTRUCT fileOp;
ZeroMemory(&fileOp, sizeof(SHFILEOPSTRUCT));
fileOp.hwnd = NULL; // 窗口句柄,可以为NULL
fileOp.wFunc = FO_COPY; // 操作类型,如复制、移动、重命名等
fileOp.pFrom = L"C:\\source.txt"; // 源文件路径
fileOp.pTo = L"C:\\target.txt"; // 目标文件路径
fileOp.fFlags = FOF_NOCONFIRMATION; // 操作选项,如不显示确认对话框

int result = SHFileOperation(&fileOp);
if (result == 0) {
  // 文件操作成功
} else {
  // 文件操作失败,可以通过调用GetLastError()获取错误代码
}

サンプルの場合、ウィンドウハンドルはNULLに設定され、操作タイプはコピー、ソースファイルパスは「C:\source.txt」、ターゲットファイルパスは「C:\target.txt」です。さらに、確認ダイアログを表示しないオプションを設定して、最後にSHFileOperation関数を呼び出してファイル操作を実行します。正常終了時は0を、失敗時は0以外の値を返します。

SHFileOperation 関数は同期操作で、完了するまで現在のスレッドが停止されます。ファイル操作を非同期で実行する場合は SHFileOperationAsync 関数を使用できます。

bannerAds