質問編集履歴

1

タイトルの変更,調査して分かったことや困っていることの追記

2021/07/10 11:54

投稿

dem0nmichik0
dem0nmichik0

スコア37

test CHANGED
@@ -1 +1 @@
1
- SHFileOperationが戻り値87(DE_SRC_IS_DVD)で失敗する原因について
1
+ SHFileOperationはネットワークパスを含んいると失敗するのでしょうか?
test CHANGED
@@ -1,22 +1,42 @@
1
1
  ###実現したいこと
2
2
 
3
- SHFileOperation()のWindowsAPIを使って「HUB経由で接続したPCの共有フォルダからフォルダコピー」と「自PC内におけるフォルダ内のファイル削除」がしたいです。
3
+ SHFileOperation()のWindowsAPIを使って「HUB経由で接続したPCの共有フォルダからフォルダコピー(フォルダ内のファイルも)」がしたいです。
4
4
 
5
5
 
6
6
 
7
7
  ###調査してわかったこと
8
8
 
9
- 1.SHFileOperation()は非推奨となっており、IFileOperation()に置換したほうが良いとわかった
9
+ 1.SHFileOperation()は非推奨となっており、IFileOperation()に置換したほうが良い。
10
10
 
11
11
  ([SHFileOperationからIFileOperationへの移行事例](https://nurs.hatenablog.com/entry/20120519/1337449380)参照)
12
12
 
13
- 2.[28th Embarcadero Developer Camp](https://community.embarcadero.com/images/43816/c2.pdf)のP65によるとIFileOperationはコピー先フォルダがあると失敗することやSHFileOperation()が拡張プレフィックスには対応していない
13
+ 2.[28th Embarcadero Developer Camp](https://community.embarcadero.com/images/43816/c2.pdf)のP65によるとIFileOperationはコピー先フォルダがあると失敗することやSHFileOperation()が拡張プレフィックス(\?)には対応していない
14
+
15
+ 3.下記操作をすると,SHFileOperation()を使ったフォルダコピーが失敗する。
16
+
17
+ 0. アプリを起動して,選択画面を表示する。
18
+
19
+ 0. 選択画面で「ログ表示」ボタンをクリックしてTMemoコントロールにログを表示後,「戻る」ボタンをクリックして,選択画面に戻る。
20
+
21
+ 0. 選択画面で「ログ取得」ボタンをクリックして,HUB経由のフォルダを共有したPCからログを取得後,「戻る」ボタンをクリックして,選択画面に戻る。→このときはログはフォルダごとコピー成功。
22
+
23
+ 0. 選択画面で「ログ表示」ボタンをクリックしてTMemoコントロールにログを表示後,「戻る」ボタンをクリックして,選択画面に戻る。
24
+
25
+ 0. 3で成功したログ取得をフォルダごと削除する。
26
+
27
+ 0. 選択画面で「ログ取得」ボタンをクリックして,HUB経由のフォルダを共有したPCからログを取得後,「戻る」ボタンをクリックして,選択画面に戻る。→このときはログはフォルダは作成されるが,ファイルはコピーされない。
14
28
 
15
29
 
16
30
 
17
31
  ### 困っていること
18
32
 
19
- 業務アプリでSHFileOperation()の戻り値が87(DE_SRC_IS_DVD)となって、「フォルダコピー」や「ファイル削除」が失敗します。Windows10でSHFileOperation()は使用しないほうが良いょうか?それとも戻り値から何かわかりすでょうか?ご存じの方、ご教授お願いします。
33
+ 業務アプリでSHFileOperation()の戻り値が~~87(DE_SRC_IS_DVD)~~0x57(10進数87)(ERROR_INVALID_PARAMETER)となって、「パラメタが間違っていると分かったので,[Using SHFileOperation: What errors are occuring - Stack ...](https://stackoverflow.com/questions/4568015/using-shfileoperation-what-errors-are-occuring)を参考に下記2つ初期化方法を試しましたが,「フォルダコピー」が失敗します。
34
+
35
+ ・ SHFILEOPSTRUCT tSHFile = { 0 };
36
+
37
+ ・ZeroMemory(&tSHFile, sizeof(SHFILEOPSTRUCT ));
38
+
39
+ Windows10でSHFileOperation()は使用しないほうが良いのでしょうか?ご存じの方、ご教授お願いします。
20
40
 
21
41
 
22
42