|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отображение процесса перемещения файлов |
|
[решено] Отображение процесса перемещения файлов
|
Новый участник Сообщения: 31 |
Профиль | Отправить PM | Цитировать Подскажите как можно сделать отображение процесса перемещения файлов, пробовал через GuiCtrlCreateAvi + файл avi , но видео не воспроизводится а отображается как статическая картинка пытался найти аналогичное видео через shell32 но не нашол. Собственно нужно лишь постоянное воспроизвидение видео до завершения процесса перемещения
|
|
Отправлено: 17:29, 28-01-2010 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата cra5h_:
Ну или можно совсем использовать перемещение файлов с отображением системного диалога: #Region consts Global Const $FOR_MOVE = 0x0001 Global Const $FOR_COPY = 0x0002 Global Const $FOR_DELETE = 0x0003 Global Const $FOR_RENAME = 0x0004 Global Const $FOF_MULTIDESTFILES = 0x0001 Global Const $FOF_CONFIRMMOUSE = 0x0002 Global Const $FOF_SILENT = 0x0004 Global Const $FOF_RENAMEONCOLLISION = 0x0008 Global Const $FOF_NOCONFIRMATION = 0x0010 Global Const $FOF_WANTMAPPINGHANDLE = 0x0020 Global Const $FOF_ALLOWUNDO = 0x0040 Global Const $FOF_FILESONLY = 0x0080 Global Const $FOF_SIMPLEPROGRESS = 0x0100 Global Const $FOF_NOCONFIRMMKDIR = 0x0200 Global Const $FOF_NOERRORUI = 0x0400 Global Const $FOF_NOCOPYSECURITYATTRIBS = 0x0800 Global Const $FOF_NORECURSION = 0x1000 Global Const $FOF_NO_CONNECTED_ELEMENTS = 0x2000 Global Const $FOF_WANTNUKEWARNING = 0x4000 Global Const $FOF_NORECURSEREPARSE = 0x8000 #Endregion consts ; $iFlags = BitOR($FOF_FILESONLY, $FOF_ALLOWUNDO, $FOF_RENAMEONCOLLISION, $FOF_NOCONFIRMMKDIR) _CopyWithProgress("C:\File.avi", "D:\File.avi", $FOR_MOVE, $iFlags) Func _CopyWithProgress($sFrom, $sTo, $OPERATION_MODE, $GENERAL_MODE) ; version 1 by SumTingWong on 5/26/2006 ; http://www.autoitscript.com/forum/in...howtopic=11888 ; updated by lod3n on 6/5/2007 Local $SHFILEOPSTRUCT Local $pFrom, $pTo, $aDllRet, $nError = 0 If FileExists($sTo) And StringRight($sFrom, 3) <> "*.*" And StringInStr(FileGetAttrib($sFrom), "D") Then $sFrom &= "\*.*" $SHFILEOPSTRUCT = DllStructCreate("int;uint;ptr;ptr;uint;int;ptr;ptr") If @error Then Return "nostruct" ; hwnd DllStructSetData($SHFILEOPSTRUCT, 1, 0) ; wFunc DllStructSetData($SHFILEOPSTRUCT, 2, $OPERATION_MODE) ; pFrom $pFrom = DllStructCreate("char[" & StringLen($sFrom) + 2 & "]") ; pFrom will now be null-terminated at StringLen($sFrom)+1 DllStructSetData($pFrom, 1, $sFrom) For $i = 1 To StringLen($sFrom) + 2 If DllStructGetData($pFrom, 1, $i) = 10 Then DllStructSetData($pFrom, 1, 0, $i) Next ; We need a second null at the end DllStructSetData($pFrom, 1, 0, StringLen($sFrom) + 2) DllStructSetData($SHFILEOPSTRUCT, 3, DllStructGetPtr($pFrom)) ; pTo $pTo = DllStructCreate("char[" & StringLen($sTo) + 2 & "]") ; pTo will now be null-terminated at StringLen($sTo)+1 DllStructSetData($pTo, 1, $sTo) ; We need a second null at the end DllStructSetData($pTo, 1, 0, StringLen($sTo) + 2) DllStructSetData($SHFILEOPSTRUCT, 4, DllStructGetPtr($pTo)) ; fFlags DllStructSetData($SHFILEOPSTRUCT, 5, $GENERAL_MODE) ; fAnyOperationsAborted DllStructSetData($SHFILEOPSTRUCT, 6, 0) ; hNameMappings DllStructSetData($SHFILEOPSTRUCT, 7, 0) ; lpszProgressTitle DllStructSetData($SHFILEOPSTRUCT, 8, 0) $aDllRet = DllCall("shell32.dll", "int", "SHFileOperation", "ptr", DllStructGetPtr($SHFILEOPSTRUCT)) $iRetCode = $aDllRet[0] $pFrom = 0 $pTo = 0 $SHFILEOPSTRUCT = 0 If $iRetCode <> 0 Then Return SetError($nError, $iRetCode, False) Return True EndFunc ;==>_CopyWithProgress |
|
------- Отправлено: 13:16, 29-01-2010 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать Как для решения проблемы подходит, но слишком много буков для решения обычной задачи
|
Отправлено: 16:52, 29-01-2010 | #12 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата cra5h_:
|
|
------- Отправлено: 16:59, 29-01-2010 | #13 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать думаю вопрос решен, осталось только проверить на работоспособность его в Windows 98 .
|
Последний раз редактировалось cra5h_, 29-01-2010 в 17:20. Отправлено: 17:09, 29-01-2010 | #14 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать В Windows 98 не работает...
|
Отправлено: 18:10, 01-02-2010 | #15 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата cra5h_:
Хотя судя по MSDN функция «SHFileOperation» поддерживается даже в Win 95... P.S В 3.2.8.1 не пробовал запустить? |
|
------- Отправлено: 21:37, 01-02-2010 | #16 |
Новый участник Сообщения: 31
|
Профиль | Отправить PM | Цитировать хорошо попробую, на версии 3.2.12.1 не захотело
|
Отправлено: 10:10, 02-02-2010 | #17 |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать Можно попробывать так:
; Windows - copy with progress ; Author - JdeB ;~ 4 Do not display a progress dialog box. ;~ 8 Give the file being operated on a new name in a move, copy, or rename operation if a file with the target name already exists. ;~ 16 Respond with "Yes to All" for any dialog box that is displayed. ;~ 64 Preserve undo information, if possible. ;~ 128 Perform the operation on files only if a wildcard file name (*.*) is specified. ;~ 256 Display a progress dialog box but do not show the file names. ;~ 512 Do not confirm the creation of a new directory if the operation requires one to be created. ;~ 1024 Do not display a user interface if an error occurs. ;~ 2048 Version 4.71. Do not copy the security attributes of the file. ;~ 4096 Only operate in the local directory. Don't operate recursively into subdirectories. ;~ 8192 Version 5.0. Do not copy connected files as a group. Only copy the specified files. _FileCopy('D:\Test.tmp', 'C:\') Func _FileCopy($sFrom, $sTo) $wShell = ObjCreate('Shell.Application') $wShell.NameSpace($sTo).CopyHere($sFrom, 128) EndFunc ;==>_FileCopy |
Отправлено: 18:38, 02-02-2010 | #18 |
Старожил Сообщения: 206
|
Профиль | Отправить PM | Цитировать Или можно так:
If $CmdLine[0] Then Exit FileCopy($CmdLine[1], $CmdLine[2]) EndIf GUICreate('MyGUI') $Ani = GUICtrlCreateAvi(@SystemDir & '\shell32.dll', 161, 50, 10) GUISetState() GUICtrlSetState($Ani, 1) $Result = RunWait(@ScriptFullPath & ' "D:\Test.tmp" "C:\"') If (@error) Or ($Result) Then MsgBox(16, '', 'Error!') Else MsgBox(64, '', 'OK') EndIf GUICtrlSetState($Ani, 0) GUIDelete() |
Последний раз редактировалось Yashied, 02-02-2010 в 21:10. Отправлено: 19:05, 02-02-2010 | #19 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - [решено] Проблема перемещения файлов и папок, путем перетаскивания | davserg | Microsoft Windows 7 | 8 | 19-10-2009 11:55 | |
Запрет выполнения файлов, но не перемещения, удаления, создания... | ZORBI | Microsoft Windows NT/2000/2003 | 9 | 25-04-2009 20:45 | |
Интерфейс - отображение скрытых файлов | pr-lp | Microsoft Windows Vista | 3 | 02-09-2008 23:35 | |
Мониторинг копирования (перемещения) файлов по сети | glazemir | Microsoft Windows NT/2000/2003 | 8 | 15-05-2008 09:07 | |
Программы по созданию/ перемещения/ замены ассоциаций файлов | wadimus | Автоматическая установка Windows 2000/XP/2003 | 0 | 09-03-2007 09:51 |
|