Windows Vista rzeczywiście to nowy silnik, który obsługuje kopiowania dokładnie to, czego szukasz zrobić. Możliwe jednak, że poprzednia istniejąca funkcjonalność może zaspokoić Twoje potrzeby. Na przykład, jeśli chcesz skopiować, przenieść, zmienić nazwę lub usunąć pojedynczy plik lub katalog, możesz skorzystać z funkcji SHFileOperation (wyeksponowanej z powłoki shell32.dll), która jest już zapakowana w środowisko wykonawcze Visual Basic. Jeśli używasz Visual Basic 2005, można po prostu użyć funkcji z Mojego nazw, na przykład:
My.Computer.FileSystem.CopyDirectory(
sourcePath, destinationPath, UIOption.AllDialogs)
Osiągnięcie samo w C# wymaga tylko trochę więcej pracy, dodając odniesienie do Microsoft.VisualBasic. DLL (z katalogu instalacyjnego programu Microsoft® .NET Framework) i za pomocą kodu, takich jak:
using Microsoft.VisualBasic.FileIO;
...
FileSystem.CopyDirectory(
sourcePath, destinationPath, UIOption.AllDialogs);
po uruchomieniu spowoduje to w tym samym interfejsie postępu chcesz zobaczyć, czy robisz te same operacje na plikach z Eksploratora Windows. W rzeczywistości podczas pracy w systemie Windows Vista automatycznie uzyskuje się nowy interfejs użytkownika postępu w systemie Windows Vista, jak pokazano na rysunku 1. ![Dialog](https://i.stack.imgur.com/Y28no.gif)
możliwy duplikat [Jak mogę wywołać okno dialogowe "kopia pliku powłoki", aby zgłosić postęp kopii w Win32?] (http://stackoverflow.com/questions/5729808/how-do-i-invoke-the-shell-file-copy-dialog-to-report-the-progress-ofa-a- odpis) –
zamiast tego lepiej użyć 'xcopy' lub' robocopy'. Możliwy duplikat http://stackoverflow.com/q/3124038/380384 – ja72
Nie wiem, czy framework obsługuje taką obsługę, może być konieczne wywołanie funkcji [SHFileOperation()] (http://msdn.microsoft) .com/en-us/library/bb762164.aspx). –