Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отображение процесса перемещения файлов

Ответить
Настройки темы
[решено] Отображение процесса перемещения файлов

Новый участник


Сообщения: 31
Благодарности: 1

Профиль | Отправить PM | Цитировать


Подскажите как можно сделать отображение процесса перемещения файлов, пробовал через GuiCtrlCreateAvi + файл avi , но видео не воспроизводится а отображается как статическая картинка пытался найти аналогичное видео через shell32 но не нашол. Собственно нужно лишь постоянное воспроизвидение видео до завершения процесса перемещения

Отправлено: 17:29, 28-01-2010

 

Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата cra5h_:
как можно сделать видео(анимация) как в проводнике Windows при копировании/перемещении(документы летают из папки в папку) ? »
Как вариант, вытащить из видео кадры, и менять их в callback-функций __FCSP_ProgressRoutine используя глобальный счётчик.

Ну или можно совсем использовать перемещение файлов с отображением системного диалога:

Код: Выделить весь код
#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

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:16, 29-01-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 31
Благодарности: 1

Профиль | Отправить PM | Цитировать


Как для решения проблемы подходит, но слишком много буков для решения обычной задачи

Отправлено: 16:52, 29-01-2010 | #12


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата cra5h_:
слишком много буков для решения обычной задачи »
Кто сказал что это обычная задача? копирование, да, задача обычная и тривиальная, а копирование с отображением прогресса, далеко не обычная, требует обработку данных и вывод детальной информаций, отсюда и “многобуков”

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 16:59, 29-01-2010 | #13


Новый участник


Сообщения: 31
Благодарности: 1

Профиль | Отправить PM | Цитировать


думаю вопрос решен, осталось только проверить на работоспособность его в Windows 98 .

Последний раз редактировалось cra5h_, 29-01-2010 в 17:20.


Отправлено: 17:09, 29-01-2010 | #14


Новый участник


Сообщения: 31
Благодарности: 1

Профиль | Отправить PM | Цитировать


В Windows 98 не работает...

Отправлено: 18:10, 01-02-2010 | #15


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата cra5h_:
В Windows 98 не работает »
А кто сказал что оно должно работать там? AutoIt последних версий больше не поддерживает Win 9x.

Хотя судя по MSDN функция «SHFileOperation» поддерживается даже в Win 95...

P.S
В 3.2.8.1 не пробовал запустить?

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 21:37, 01-02-2010 | #16


Новый участник


Сообщения: 31
Благодарности: 1

Профиль | Отправить PM | Цитировать


хорошо попробую, на версии 3.2.12.1 не захотело

Отправлено: 10:10, 02-02-2010 | #17


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить 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


Аватара для Yashied

Старожил


Сообщения: 206
Благодарности: 88

Профиль | Отправить 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



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Отображение процесса перемещения файлов

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - [решено] Проблема перемещения файлов и папок, путем перетаскивания 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




 
Переход