powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / копирование нескольких файлов "средствами ОС"
4 сообщений из 4, страница 1 из 1
копирование нескольких файлов "средствами ОС"
    #39596306
SKR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SKR
Гость
Нужно скопировать множество файлов, но с отображением системного окна процесса копирования.
Один файл скопировать легко:
Код: vbnet
1.
My.Computer.FileSystem.CopyFile(SrsFile, DstFile)





Т.е. нужно скормить ОС массив файлов, что бы она сама занималась расчетом времени, отображением общего процесса и т.п.
...
Рейтинг: 0 / 0
копирование нескольких файлов "средствами ОС"
    #39596336
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
https://msdn.microsoft.com/en-us/library/windows/desktop/aa363852(v=vs.85).aspx
массив файлов копируют в цикле
...
Рейтинг: 0 / 0
копирование нескольких файлов "средствами ОС"
    #39596498
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman Mejtes,

CopyFileEx -предполагает возврат % копирования в CallBack, а уж кодописатель сам мухлюет со свистелками

ТС спрашивал про системное (от слова Operation System) окно.

SHFileOperation function

SKR,
почитай про эту ф-цию и может там рядом еще какие есть.
Даю тупо мой код (спойлер ниже), но я его в основном использую для копирования папок с файлами (когда ощутимое время ждать приходится, и вывод диалога имеет смысл). Чтоб набор-массив исходных файлов абы откуда попало, из разных папок я не делал.

Хотя вот идея.
SHFILEOPSTRUCT structure
pFromType: PCZZTSTR
Note This string must be double-null terminated.
A pointer to one or more source file names . These names should be fully qualified paths to prevent unexpected results.


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
  'wFunc - A value that indicates which operation to perform
  Public Const FO_MOVE = &H1
  Public Const FO_COPY = &H2
  Public Const FO_DELETE = &H3
  Public Const FO_RENAME = &H4

  'fFlags - Flags that control the file operation
  'Preserve undo information, if possible (класть в корзину)
  Public Const FOF_ALLOWUNDO = &H40
  'Respond with Yes to All for any dialog box that is displayed
  Public Const FOF_NOCONFIRMATION = &H10
  'Do not ask the user to confirm the creation of a new directory if required
  Public Const FOF_NOCONFIRMMKDIR = &H200
  'Do not copy the security attributes of the file.
  'The destination file receives the security attributes of its new folder.
  Public Const FOF_NOCOPYSECURITYATTRIBS = &H800
  'Do not display a dialog to the user if an error occurs.
  Public Const FOF_NOERRORUI = &H400
  'Do not display a progress dialog box.
  Public Const FOF_SILENT = &H4
  'Display a progress dialog box but do not show individual file names as they are operated on.
  Public Const FOF_SIMPLEPROGRESS = &H100
  'Windows Vista. Perform the operation silently, presenting no UI to the user.
  Public Const FOF_NO_UI = FOF_SILENT Or FOF_NOCONFIRMATION Or FOF_NOCONFIRMMKDIR Or FOF_NOERRORUI

  <StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
  Public Structure SHFILEOPSTRUCT
    Dim hwnd As IntPtr
    Dim wFunc As Integer
    Dim pFrom As String
    Dim pTo As String
    Dim fFlags As Short
    Dim fAnyOperationsAborted As Boolean
    Dim hNameMappings As IntPtr
    Dim lpszProgressTitle As String
  End Structure

  Public Function ShellCopyFileFolder(ByVal strSource As String, ByVal strTarget As String, _
   Optional ByVal bMove As Boolean = False, _
   Optional ByVal bSilent As Boolean = True, _
   Optional ByVal bNoConfirmMakeDir As Boolean = True, _
   Optional ByVal bNoConfirm As Boolean = True, _
   Optional ByVal bNoShowErrors As Boolean = True, _
   Optional ByVal bNoCopySecurityAttribs As Boolean = True) As Boolean
    'bMove -использовать Move вместо Copy
    'bSilent - не показывать диалог копирования
    'bNoConfirmMakeDir -создавать папку, куда копировать без подтверждения
    'bNoConfirm -не задавать пользователю лишних вопросов
    'bNoShowErrors -не выводить диалоги про ошибки
    'bNoCopySecurityAttribs - не копировать права на исх. файлы и папки

    'ВАЖНО!!! при копировании папок
    'если папка strTarget существует, то папка с именем strSource копируется в strTarget
    'если папка strTarget НЕ существует, то она создается в strTarget и туда копируется содержимое strSource

    Dim SHFileOp As New SHFILEOPSTRUCT  ' structure To pass To the Function
    Dim dwRes As Integer

    'коррекция
    strSource = InCorrectDir(strSource) & Chr(0) & Chr(0) 'убираем "\" на конце и добавляем "\0\0" 
    strTarget = InCorrectDir(strTarget) 'убираем "\" на конце

    With SHFileOp
      If bMove Then
        .wFunc = FO_MOVE
      Else
        .wFunc = FO_COPY
      End If
      .pFrom = strSource
      .pTo = strTarget
      If bSilent Then .fFlags = .fFlags Or FOF_SILENT
      If bNoConfirmMakeDir Then .fFlags = .fFlags Or FOF_NOCONFIRMMKDIR
      If bNoConfirm Then .fFlags = .fFlags Or FOF_NOCONFIRMATION
      If bNoShowErrors Then .fFlags = .fFlags Or FOF_NOERRORUI
      If bNoCopySecurityAttribs Then .fFlags = .fFlags Or FOF_NOCOPYSECURITYATTRIBS
    End With

    dwRes = SHFileOperation(SHFileOp)
    'If dwRes <> 0 Then Debug.Print "SHFileOperation Error " & CStr(dwRes)

    ShellCopyFileFolder = (dwRes = 0)

  End Function

...
Рейтинг: 0 / 0
копирование нескольких файлов "средствами ОС"
    #39596499
Дмитрий77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сорри, забыл декларацию самой ф-ции под спойлер засунуть.
Код: vbnet
1.
2.
  Public Declare Unicode Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationW" _
   (ByRef lpFileOp As SHFILEOPSTRUCT) As Integer
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / копирование нескольких файлов "средствами ОС"
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]