winforms アプリを使用してネットワーク経由で大きなファイルをコピーする予定で、ある種の進行状況バーを表示する必要があります。独自のコピー ルーチンを作成するよりも、組み込みのファイル コピー ダイアログを表示する方がよいのではないかと考えていました。
「コピー完了」と「コピー失敗」の通知も必要です。
Windows XP、Vista、および 7 で動作させるにはこれが必要です。C# コードからこの機能を呼び出す方法はありますか?
winforms アプリを使用してネットワーク経由で大きなファイルをコピーする予定で、ある種の進行状況バーを表示する必要があります。独自のコピー ルーチンを作成するよりも、組み込みのファイル コピー ダイアログを表示する方がよいのではないかと考えていました。
「コピー完了」と「コピー失敗」の通知も必要です。
Windows XP、Vista、および 7 で動作させるにはこれが必要です。C# コードからこの機能を呼び出す方法はありますか?
回答元:こちら
実際、Windows Vista には、ユーザーが求めていることを正確にサポートする新しいコピー エンジンが含まれています。ただし、以前の既存の機能がニーズを満たす可能性があります。たとえば、個々のファイルまたはディレクトリをコピー、移動、名前変更、または削除する場合、Visual Basic® ランタイムによって既にラップされている SHFileOperation (shell32.dll から公開) を利用できます。Visual Basic 2005 を使用している場合は、My 名前空間の機能を簡単に使用できます。次に例を示します。
My.Computer.FileSystem.CopyDirectory( sourcePath, destinationPath, UIOption.AllDialogs)
C# で同じことを行うには、(Microsoft® .NET Framework インストール ディレクトリから) Microsoft.VisualBasic.dll への参照を追加し、次のようなコードを使用するという、もう少し作業が必要です。
using Microsoft.VisualBasic.FileIO; ... FileSystem.CopyDirectory( sourcePath, destinationPath, UIOption.AllDialogs);
これを実行すると、Windows エクスプローラーから同じファイル操作を行った場合と同じ進捗 UI が表示されます。実際、Windows Vista で実行すると、新しい Window Vista 進行状況 UI が自動的に表示されます (図 1 参照)。