powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Копирования методом API способом Windows
18 сообщений из 18, страница 1 из 1
Копирования методом API способом Windows
    #37569643
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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.
Private Type SHFILEOPSTRUCT
   hwnd        As Long
   wFunc       As Long
   pFrom       As String
   pTo         As String
   fFlags      As Integer
   fAborted    As Boolean
   hNameMaps   As Long
   sProgress   As String
 End Type
  
Private Const MAX_PATH As Long = 260
 
'File Operations
Private Const FO_MOVE As Long = &H1
Private Const FO_COPY As Long = &H2
Private Const FO_DELETE As Long = &H3
Private Const FO_RENAME As Long = &H4

'File Operation Flags
Private Const FOF_MULTIDESTFILES As Long = &H1
Private Const FOF_CONFIRMMOUSE As Long = &H2
Private Const FOF_SILENT As Long = &H4              'don't create progress/report
Private Const FOF_RENAMEONCOLLISION As Long = &H8
Private Const FOF_NOCONFIRMATION As Long = &H10     'don't prompt the user.
Private Const FOF_WANTMAPPINGHANDLE As Long = &H20  'Fill in SHFILEOPSTRUCT.hNameMappings
                                                    'Must be freed using SHFreeNameMappings
Private Const FOF_ALLOWUNDO As Long = &H40
Private Const FOF_FILESONLY As Long = &H80          'on *.*, do only files
Private Const FOF_SIMPLEPROGRESS As Long = &H100    'don't show names of files
Private Const FOF_NOCONFIRMMKDIR As Long = &H200    'don't confirm making any needed dirs
Private Const FOF_NOERRORUI As Long = &H400         'don't put up error UI
Private Const FOF_NORECURSION As Long = &H1000      'don't recurse into directories
Private Const FOF_NOCOPYSECURITYATTRIBS As Long = &H800  'don't copy NT file Security Attributes
Private Const FOF_NO_CONNECTED_ELEMENTS As Long = &H2000 'Shell v5+: don't operate on connected file elements
Private Const FOF_WANTNUKEWARNING As Long = &H4000       'Shell v5+: during delete operation, warn if
                                                         'nuking instead of recycling (partially
                                                         'overrides FOF_NOCONFIRMATION)
Private Const FOF_NORECURSEREPARSE As Long = &H8000&  'Shell v5.1+: treat reparse points as
                                                      'objects, not containers
                                                   
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nSize As Long, ByVal lpBuffer As String) As Long

Private Declare Function SHFileOperation Lib "shell32" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long

'FO_FUNC is determined by the
'type of SHFileOperation action chosen
'(move/delete/rename/copy)
Private FO_FUNC As Long
  
'FOF_FLAGS is determined by the
'both the SHFileOperation Actions/Method
'frame and the SHFileOperation Options
'frame choices (delete/recycle/simple
'progress/no confirm etc.)
Private FOF_FLAGS As Long
 
'for ease of reading, substitute constants
'for numbers in code SHFileOperationAction
'option button constants
'Private Const FileMove As Long = 1
'Private Const FileCopy As Long = 2
'Private Const FileDelete As Long = 3

Public Sub GlWinCopyFile(Frm As Form, zvidki As String, kuda As String)
Dim sys As SHFILEOPSTRUCT
  sys.wFunc = FO_COPY
  sys.pFrom = zvidki
  sys.pTo = kuda
  sys.hwnd = Frm.hwnd
  sys.fFlags = FOF_SIMPLEPROGRESS
  'Call SHFileOperation(sys)
  FileCopy zvidki, kuda
End Sub




скопировал сначало версию делфи, переделал, потом нашел готовый вариант, оказался таким же. И у меня в результате на строке
Call SHFileOperation(sys) выскакивает "фак" мемори не может быть read и весь проэкт выбрасывает из памьяти. Нужно наново открывать проэкт и чёто там эксперементировать. Что там не так ?
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37569726
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,
из описания структуры SHFILEOPSTRUCT :
pFrom
Type: LPCTSTR
Note This string must be double-null terminated .

pTo
Type: LPCTSTR
Note This string must be double-null terminated .

Ваши zvidki, kuda заканчиваются двойным Chr(0) ?
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570053
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С удовольствием бы посмотрел на MSDN, НО у меня зарубано этот сайт и все сайты антивирусных программ. Я уже и в файл HOST смотрел, и фаервола нет, может мой провайдер "Укртелеком" зарубал, не знаю....

тоесть я должен в конце добавить & chr(0) & chr(0) ? Попробую.
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570071
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,
странно. У меня тоже Укртелеком, но MSDN отрывается без проблем.
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570075
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,
сильно насторожило:у меня зарубано этот сайт и все сайты антивирусных программ Рекомендую загрузиться с внешенего носителя и протестировать систему, например AVZ
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570106
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
там на майкрософт есть программа виртуальный комп. Хочу скачать и страница не открывается. Возможно после того как установил фотошоп CS3. Но я знаю что он рубает себя в хост файле. Я там все удалил, перегружал комп, все безтолку

а возвращаясь к теме у меня не получилось
мне нужно к примеру путь1\файл копировать на путь2\имья файла другое
возможно я "куда" не правильно использую ? может там только path нужно (пробовал) с "\" - еще не пробовал. не знаю в чем дело
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570127
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает. Спасибо. Нужно в поле "Куда" использовать только Path чтоб заканчивался на "\".
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570137
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,
проблема не в строках, а в ФОРМЕ
У меня нормально отработало такое
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
'Public Sub GlWinCopyFile(Frm As Form, zvidki As String, kuda As String)
Public Sub GlWinCopyFile(zvidki As String, kuda As String)
Dim sys As SHFILEOPSTRUCT
  sys.wFunc = FO_COPY
  sys.pFrom = zvidki
  sys.pTo = kuda
  'sys.hwnd = Frm.hwnd
  sys.hwnd = 0
  sys.fFlags = FOF_SIMPLEPROGRESS
  Call SHFileOperation(sys)
  'FileCopy zvidki, kuda
End Sub


Код: vbnet
1.
GlWinCopyFile "C:\temp\mdb_\201_2-0.accdb","C:\201_2-0.accdb"


Запускал в Excel.VBA
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570140
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,
а ларчик, оказывается, просто открывался
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570145
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наверное последнее
в окне копирования вместо имя файла выводится до трех символов краказябриков
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570146
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ха! Славно. После хендел=0 уже ничего не выводится. Вот и супер. То что надо! Спасибо за помощь
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570148
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> Андрей159,
> После хендел=0 уже ничего не выводится. Вот и супер. То что надо!
Зачем тогда весь этот "огород" с API ? Чем простой FileCopy zvidki, kuda не строил ?
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570153
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да юзера вроде не тупые а тупят когда не видно процеса. Мотают кругами мышку надеясь увидеть конец процеса. А при "копифайл" мышка показывает пиктограмму "часы/занято". При этом никакой DoEvent и таймер не поможет. Я уже и помощника офисного им поставил типа чтоб красивей и понятней было (говорит о поточном действии) и Label статусный есть яркожелтым показывает подсказки определенное времья. Но когда копируется несколько файлов народ тупо в непонимании что происходит. Такая уж психология. Нужен прогресс, теперь спокойней будет.
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570156
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,
а ссылку на какую форму передавал в GlWinCopyFile ?
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570168
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделал программу "Процес виконання" (исполнения), где на кабельном телевидении один комп воспроизводит видео. Другая прога нужна чтобы "Освятить" файл, тоесть такое новое понимание ввел для своих, а в сущности они дают настройки для видео: когда показывать, сколько и т.д. Вся эта каша вместе с своим_хеш_кодом вначале названия файла, которое понятно будет только на станции. На станции по хешу проверит логин/пароль и все настройки видео файла. Но весь каприз в том что сеть у нас общая, а разшаренная папка на станции (пустая) одна. Если в эту папку попадает длительное время файл, станция ничего не сообщая переносит этот файл в другую скрытую для сети папку и ставит видео в график, если нет, то просто удаляет. Зрители ничего не замечают. По UDP в ответ на запрос только сообщает что файл принят и от кого (для отчета). А изначально было придумано такую систему, чтоб только флешку в гнездо вставить и процесс копирования никому не виден. Тоесть вдома зделал рекламный видеоролик, прогой освятил, пришел на станцию, флешку втыкнул, флешка поморгала, успокоилась и можно идти домой. А сейчас для тех кто работает в офисе нужно было зделать прогресс))
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570170
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скукотищаа ссылку на какую форму передавал в GlWinCopyFile ?
типа хендел окна ? Нет ноль поставил, из Вашего примера. Таймера процес отбирают, а текущая строчка ждет окончания процеса копирования. Тоесть я доделал точную проверку путей и существования файлов чтоб не было капризов в дальнейшем и в момент копирования Enabled функциональных элементов делаю Disabled.
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570177
скукотища
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Андрей159,
может оно и не надо.
Чтобы отображались имена копируемых файлов
Код: vbnet
1.
sys.fFlags = 0 'FOF_SIMPLEPROGRESS


ЗЫ: всё-таки поверьте свою систему на наличие вирусей/малваре. Негоже, чтоыб msdn не открывался.
...
Рейтинг: 0 / 0
Копирования методом API способом Windows
    #37570193
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Превосходно!
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Копирования методом API способом Windows
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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