実際は、ディレクトリ"D"は、存在しないのですが、
以下の設定で実行したところ、戻り値が"0"(正常)で戻ります。
正しい戻り値を得るためには、どうすれば良いのでしょう。
Private Declare Function SHFileOperation Lib "SHELL32" (lpFileOp As SHFILEOPSTRUCT) As Long
'
Private Type SHFILEOPSTRUCT
hwnd As Long 'ウインドウのハンドル
wFunc As Long '定数(FO_××参照)
pFrom As String 'ファイル操作元のファイル名・ディレクトリ
pTo As String 'ファイル操作先のファイル名・ディレクトリ
fFlags As Integer '定数(FOF_××参照)
fAnyOperationsAborted As Long 'キャンセルボタンのフラグ
hNameMappings As Long '
lpszProgressTitle As String 'タイトル
End Type
'
Const FO_MOVE As Long = &H1 'ファイルを移動
Const FO_COPY As Long = &H2 'ファイルのコピー
Const FO_DELETE As Long = &H3 'ファイルを削除
Const FO_RENAME As Long = &H4 'ファイル名変更
'
'表示されるダイアログボックスに「すべてはい」を選択
Const FOF_NOCONFIRMATION = &H10&
Const FOF_ALLOWUNDO = &H40 'ゴミ箱へ削除
Const FOF_FILESONLY = &H80 'ディレクトリを含まない
Const FOF_SIMPLEPROGRESS = &H100 'ファイル名を表示しない
Const FOF_MULTIDESTFILES = &H1 '
Dim Ret As Long '戻り値
Dim SH As SHFILEOPSTRUCT 'SHFILEOPSTRUCT構造体
'
With SH
.wFunc = FO_COPY '操作方法
.pFrom = "C:\DATA" '操作元のファイル名
.pTo = "D:\SAV_DATA" '操作先のファイル名
.fFlags = FOF_MULTIDESTFILES Or FOF_NOCONFIRMATION 'フラグ
End With
Ret = SHFileOperation(SH)
いや、それは関数の戻り値としては正しいのではないでしょうか。
ツイート | ![]() |