問題タブ [shfileoperation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
564 参照

c++ - SHFileOperationの機能

SHFileOperationは、ファイルの移動と名前の変更を同時に行うことをサポートしていますか?

私はファイルのセットを持っています:c:\ f1.bmp f2.bmp f3.bmp f4.bmp

それぞれを新しいフォルダーに移動し、名前を変更します:d:\ b1.bmp b2.bmp b3.bmp b4.bmp

SHFileOperationを使用できますか?一度だけしますか?どうもありがとう!

0 投票する
2 に答える
818 参照

c++ - SHFileOperation FO_MOVE は、宛先ドライブがいっぱいの場合にファイルを削除します

FO_MOVE操作でWindows SHFileOperation関数を使用するコードがありました。指定された追加のフラグは FOF_NOCONFIRMATION | FOF_NOERRORUI | FOF_SILENT。

宛先ドライブがいっぱいになると、特定の奇妙な動作が観察されました。この場合、MOVE はファイルを宛先フォルダーに配置できませんでしたが、ソース ファイルも失われました。これは非常に予期せぬことであり、これによりデータが失われました。

これは SHFileOperation の標準的な動作ですか? 宛先ドライブに空き容量がある場合、MOVE のようなものを用意できますか?そうでない場合は、ファイルを元の場所に残しますか?

0 投票する
1 に答える
1482 参照

delphi - ネットワーク共有上のファイルを移動するときのパフォーマンスの問題

ネットワーク共有上のファイルをコピーできるアプリケーションを書いています。通常、ファイルは同じ物理ハードドライブに移動されます。これをWindowsエクスプローラーでテストすると、この操作は非常に迅速に実行されます。Windowsは同じ場所を認識しており、実際の移動を行い、コピーと削除は行わないようです(速度は遅くなります)。

ファイルのセットをコピーしたいとします。

宛先は次のとおりです。

アプリケーションはWindowsシェルAPIを使用します(アプリケーションはDelphiで作成しましたが、問題は他の言語でも同じであるはずです)。

残念ながら、このコードは「コピーと削除」を実行しますが、大きなファイルやファイルがたくさんある場合は非常に遅くなります。どうすればこれを回避できますか?フォルダが同じハードドライブ上にあることを移動操作に伝える方法はありますか?おそらく、ネットワークパスには他の表記法があります。

または、Windowsエクスプローラーで使用される別のAPI関数はありますか?

簡単な比較のために:

  • ファイル数:260
  • 各ファイルのファイルサイズ:11 kB
  • エクスプローラーでの移動時間:2秒
  • SHFILEOPERATIONで移動する時間:20秒

開発システムでWindows7を使用していますが、XPでも動作するはずなので、新しいIFileOperationインターフェイスを使用できません。

敬具

0 投票する
2 に答える
5147 参照

c++ - ダブルヌル終了文字列

SHFileOperationを使用するには、文字列をnullで終了する二重文字列にフォーマットする必要があります。

興味深い部分は、次のいずれかが機能していることですが、両方ではありません。

誰かがこれについて考えを持っていますか?

二重終端文字列を追加する他の方法はありますか?

0 投票する
1 に答える
3087 参照

c++ - SHFileOperation は、フォルダーのすべてのコンテンツを移動しません。

これにより、デスクトップに新しいフォルダーが作成されますが、フォルダー .pfrom の内容はフォルダー .pTo に移動されません。

0 投票する
1 に答える
2618 参照

winapi - FOF_NOERRORUI が要求された場合、SHFileOperation によるディレクトリ構造のコピーに失敗しました

あるディレクトリを別のディレクトリにコピーするために SHFileOperation を利用する作業コードがあります。この場合、これは Pascal コードですが、C++ でも同じ関数を使用しており、問題は特定のプログラミング言語ではなく、Windows コアに関連しているようです。

MSDN によると、次のフラグの組み合わせを指定したいと考えています。

つまり、プログレス バーは必要ありません。ファイルとディレクトリに関する可能性のあるすべての質問に対して、暗黙の「はい」の回答を表示しません。また、GUI (ダイアログ ボックス) にエラー メッセージを表示したくありません。

このフラグの組み合わせでは、関数はエラー 0x4C7 を返します (ユーザーによってキャンセルされましたが、これは正しくありません)。FOF_NOERRORUI を削除すると、同じ入力パラメーターとファイルシステムの状態で問題なく動作します。

残念ながら、エラー メッセージも抑制する必要があり、FOF_NOERRORUI フラグが必要です。

私のニーズを満たすために、このフラグの組み合わせ(および他の前提条件である可能性があります)をどのように調整する必要があるかを誰かが知っていますか?

いくつかのバグがあると思うかもしれない人のためのソースコードは次のとおりです。

0 投票する
1 に答える
974 参照

delphi - ワーカー スレッドで SHFileOperation を使用しても安全ですか?

私はを頂きたい

  • 関数を介してファイルをコピーする1つのバックグラウンドスレッドSHFileOperation、常に一度SHFileOperationに1つだけ(ただし、スレッドに入れたい)
  • UI出力が必要なので、FOF_SIMPLEPROGRESSフラグを使用してWndメンバーに何かを渡す必要があります

2つの質問があります

  1. main 以外のスレッドからSHFileOperationwithフラグ (ユーザー操作用)を呼び出しても安全ですか?FOF_SIMPLEPROGRESS
  2. はいの場合、どのハンドルをWndメンバーに渡す必要がありますか? メインフォームのハンドルを試してみたのですが、例えば上書き確認のダイアログが出てきて確認するとメインフォームがバックグラウンドに回ってしまい、どうもおかしいです

注: これらの操作のキューがあるため、一度SHFileOperationに実行されるのは 1 つだけです (終了後、スレッドは次のアクションに進みますSHFileOperation) 。

どうもありがとう

0 投票する
3 に答える
706 参照

file-io - ファイル操作のみを転送する Linux ドライバーを作成する方法は?

(最初のステップでは) すべてのファイル操作を別のファイルに転送するだけの Linux カーネル ドライバーを実装する必要があります (後のステップでは、これを管理および操作する必要がありますが、ここでは説明しません)。

私の考えは次のとおりですが、読み取り時にカーネルがクラッシュします。

だから、誰か私に理由を教えてもらえますか?

0 投票する
1 に答える
510 参照

c++ - SHFileOperation pFrom = "" の場合は削除

SHFileOperation に関する質問があります。

私の期待は、pathSubDir が "" だったので、何も削除されておらず、n が 0 に等しくないはずだったということでした。しかし、そうではありませんでした。n = 0 になりました。これは、操作が正常に完了したことを意味します。私の仮定が間違っている理由を誰かが説明してくれるかどうか、私は興味がありました. ありがとうございました。

0 投票する
1 に答える
398 参照

file-management - SHFileOperationファイル置換ダイアログ

現在、SHFileOperationには、ファイルを置き換えるかどうかをユーザーに尋ねる[ファイル置換の確認]ダイアログボックスがいくつかあります。これらは便利だと思いますが、発生するシナリオを変更できるようにしたいと思います。bool compareFile()代わりに、最初にファイルの内容を自分が作成した関数と比較したいと思います。次に、ファイルが同一である場合、ファイル置換ダイアログボックスは表示されません。私がすでに機能していると仮定すると、compareFile()これを行う方法はありますか?お時間をいただきありがとうございます。