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

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

Закрытая тема
Настройки темы
[архив - Часть 2] AutoIt скрипты

(*.*)


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


Конфигурация

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


Изменения
Автор: Vadikan
Дата: 27-01-2008
Внимание!
Тема переведена в архивное состояние







(настоятельно рекомендуется к прочтению/поиску)


Руководство к действию по работе c AutoIt.


Сайт программы
Русская справка
Коллекция AutoIt скриптов от Sanja Alone
Коллекция AutoIt скриптов от MSFN (могут быть устаревшие).
Справочник по командам rundll32 (команды запуска диалоговых окон и не только...)

AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо).



Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров.
Цитата Vadikan:
В теме уже свыше 500 сообщений и поиск нужной информации в ней усложняется. Есть предложение собрать все решения (скрипты) и разместить их на Wiki по принципу "один скрипт - одна статья wiki", добавляя статьи в категорию Autoit. Речь, в принципе, идет об общих решениях, а не о скриптах для установки конкретной программы. Название статьи, очевидно, должно отражать назначение скрипта. Затем можно в шапке просто разместить ссылки на статьи Wiki.

-------
Канал Windows 11, etc | Чат @winsiders

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

Отправлено: 00:02, 05-02-2006

 

Аватара для Creat0R

Must AutoIt


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

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


Maza Faka,
Цитата:
Может сообщишь автору, о том, что изменил его библиотеку и теперь её можно считать не бетой, а релизом
А бибилиотека разве бетой считается? если ты про AutoIt3 Beta то это значит что библиотека требует (требовала) последнюю бетку самого AutoIt

amel27,
Цитата:
его вопрос, ему и обосновывать перед автором
Согласен, обосновал .

TERMINAL,
Цитата:
нужно скопировать целую папку ( I386 c диска)и чтобы прогрес был и показывал сколько осталось минут и процентов?
Можно с ситемным диалогом:

Код: Выделить весь код
_FileCopy("C:\My Dir\*.*", "C:\Dest Dir")

Func _FileCopy($Source, $Dest)
    If Not FileExists($Dest) Then DirCreate($Dest)
    $WinShell = ObjCreate("shell.application")
    $WinShell.NameSpace($Dest).CopyHere($Source)
EndFunc

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

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

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


Последний раз редактировалось Creat0R, 28-09-2007 в 17:53.

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

Отправлено: 17:36, 28-09-2007 | #511



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

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


Аватара для Maza Faka

Ветеран


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

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


Creat0R
Цитата:
Можно с ситемным диалогом:
Огромное спасибо за код, давно искал нечто подобное! Респект!

Отправлено: 18:24, 28-09-2007 | #512


Аватара для TERMINAL

Ветеран


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

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


Creat0R, Спасибо ! А можно с перезаписью файлов (чтобы по умолчанию перезаписывало)?!

-------
Автоматизация прежде всего....


Отправлено: 18:29, 28-09-2007 | #513


Аватара для Maza Faka

Ветеран


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

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


Creat0R
И сразу вопрос, где можно найти описание синтаксиса COM - обьектов?

Цитата TERMINAL:
А можно с перезаписью файлов (чтобы по умолчанию перезаписывало)? »
Так по умолчанию перезаписывает.

-------
Сообщение помогло? Не забудьте нажать на Полезное сообщение


Отправлено: 18:42, 28-09-2007 | #514


Ветеран


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

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


Creat0R, всё же как то скрипт странно работает, на виртуальной машине после применения скрипта, индикатор закрывается, но сразу же появляется "плавающая" языковая панель - здесь я просто бессильный, может быть скрипту дать задержку между выполнением его действий (внутри самого скрипта)?

-------
All my homies dont play better watch what you say and put your glock away, ease back, ease back, ease back before i squeeze that...


Отправлено: 21:04, 28-09-2007 | #515


Аватара для Creat0R

Must AutoIt


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

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


TERMINAL, Maza Faka,
Цитата TERMINAL:
можно с перезаписью файлов »
Я вспомнил, есть ещё и API методы для копирования с отображением системного диалога...

Вот функции прямо из оф. форума (ссылка на источник) включая константы и обработчик ошибок (я лишь немного подправил функции):

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

Func _CopyWithProgress($sFrom, $sTo, $OPERATION_MODE, $GENERAL_MODE)
    ; version 1 by SumTingWong on 5/26/2006
    ; http://www.autoitscript.com/forum/index.php?showtopic=11888
    ; updated by lod3n on 6/5/2007
    
    Local $SHFILEOPSTRUCT
    Local $pFrom
    Local $pTo
    Local $aDllRet
    Local $nError = 0
    Local $i
    
	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))
    $retcode = $aDllRet[0]
    $pFrom = 0
    $pTo = 0
    $SHFILEOPSTRUCT = 0
    If $retcode <> 0 Then
        ConsoleWrite(hex($retcode) & ": " & SHFileOperationErrDecode($retcode) & @crlf)
        SetError($nError)
        Return False
    EndIf
    Return True
EndFunc

Func SHFileOperationErrDecode($errNum)
    Switch $errNum
        case 113    
            return "The source and destination files are the same file."
        case 114    
            return "Multiple file paths were specified in the source buffer, but only one destination file path."
        case 115    
            return "Rename operation was specified but the destination path is a different directory. Use the move operation instead."
        case 116    
            return "The source is a root directory, which cannot be moved or renamed."
        case 117    
            return "The operation was cancelled by the user, or silently cancelled if the appropriate flags were supplied to SHFileOperation."
        case 118    
            return "The destination is a subtree of the source."
        case 120    
            return "Security settings denied access to the source."
        case 121    
            return "The source or destination path exceeded or would exceed MAX_PATH."
        case 122    
            return "The operation involved multiple destination paths, which can fail in the case of a move operation."
        case 124    
            return "The path in the source or destination or both was invalid."
        case 125    
            return "The source and destination have the same parent folder."
        case 126    
            return "The destination path is an existing file."
        case 128    
            return "The destination path is an existing folder."
        case 129    
            return "The name of the file exceeds MAX_PATH."
        case 130    
            return "The destination is a read-only CD-ROM, possibly unformatted."
        case 131    
            return "The destination is a read-only DVD, possibly unformatted."
        case 132    
            return "The destination is a writable CD-ROM, possibly unformatted."
        case 133    
            return "The file involved in the operation is too large for the destination media or file system."
        case 134    
            return "The source is a read-only CD-ROM, possibly unformatted."
        case 135    
            return "The source is a read-only DVD, possibly unformatted."
        case 136    
            return "The source is a writable CD-ROM, possibly unformatted."
        case 183
            return "MAX_PATH was exceeded during the operation."
        case 1026, 0000005
            return "An unknown error occurred. This is typically due to an invalid path in the source or destination. This error does not occur on Microsoft Windows Vista and later."
        case 65536  
            return "An unspecified error occurred on the destination."
        case 65652  
            return "Destination is a root directory and cannot be renamed."
		Case 0000002
			return "Confirmation was canceled"
    EndSwitch
    
    return "SHFileOperation returned errorcode " & hex($errNum) & ", which is not recognized"
EndFunc
Вот примеры использования:

Код: Выделить весь код
;Копирование содержимого папки с подтверждением на перезапись (подавляется диалог о создании папки - константа $FOF_NOCONFIRMMKDIR)
_CopyWithProgress("C:\Source", "C:\Dest", $FOR_COPY, $FOF_NOCONFIRMMKDIR)

;Копирование содержимого папки подавляя подтверждение на перезапись (перезапись без подтверждения)
_CopyWithProgress("C:\Source", "C:\Dest", $FOR_COPY, BitOR($FOF_NOCONFIRMMKDIR, $FOF_NOCONFIRMATION))

;Копирование содержимого папки без рекурсии (файлы только в указанной папке)
_CopyWithProgress("C:\Source\*.*", "C:\Dest", $FOR_COPY, $FOF_NORECURSION)

;Копирование только файлов с возможностью отмены действии (без каталогов)
_CopyWithProgress("C:\Source", "C:\Dest", $FOR_COPY, BitOR($FOF_FILESONLY, $FOF_ALLOWUNDO))
Maza Faka,
Цитата Maza Faka:
где можно найти описание синтаксиса COM - обьектов? »
Ну как, в справке вообще то
Если ты про мой пример конкретно, я его с оф. форума стащил, но вообще то это нужно смотреть документацию к тому или инному приложению (в этом случае к Windows ).

SAOPP,
Цитата:
сразу же появляется "плавающая" языковая панель
Это видимо такие настройки для этой панели (хотя у себя такого никогда не замечал), посмотри в панели управления её настройки.

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

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

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

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

Отправлено: 03:18, 29-09-2007 | #516


Аватара для Creat0R

Must AutoIt


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

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


Обновил Скрипт расскраски кода AutoIt для помещения в форумы (Au3ToPst):

Список изменении:

Цитата:
v1.5
* Исправлена проблема при открытии программы из редактора SciTE - если в последний раз использовалась опция ручного ввода кода, то естественно содержимое скрипта не отображалось, теперь птичка "Ввести код вручную" не будет ставиться если была передана ком. строка.
* Добавленна поддержка Ctrl + A (выделяет весь код в Edit поле).
* В пункт меню редактора SciTe при интеграции теперь подключается и горячая клавиша Ctrl + K.
* Исправлена большая загрузка ЦП при длительных колдовании курсора мышки над полем ввода кода .
* Мелкие ошибки и недочёты поправлены.

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

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

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


Отправлено: 10:24, 29-09-2007 | #517


Аватара для Creat0R

Must AutoIt


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

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


amel27
Если при обработке раскраски присутствуют #Region Something, то обработка не может распознать стили - их можно как то добавить?

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

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

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


Отправлено: 20:58, 29-09-2007 | #518


Аватара для mariolast

Ветеран


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

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


При установке приложени устанавливаются файлы setup.msi -> EN.msi -> VBA.msi -> FontNav.msi. То есть setup.msi отрабатывает свое и передает "эстафетную палочку" дальше. Надо чтобы скрипт отслеживал выполнение каждоготиз четырех компонентов и во время выполнения каждого из них приостанавливал выполнение скрипта.
Я думал так

WinWaitActive ( "EN" )
WinWaitClose ( "EN")
WinWaitActive ( "VBA" )
WinWaitClose ( "VBA" )
WinWaitActive ( "FontNav" )
WinWaitClose ( "FontNav" )

Но слишком быстро нав. выполняется последний компонент и скрипт не успевает что ли увидеть окно "FontNav" (компонент FontNav.msi), в результате висит вечно в паузе.

Отправлено: 00:37, 30-09-2007 | #519


Googler


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

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


mariolast
функция WinWaitClose() обязательна?.. попробуйте без них

Creat0R
Цитата:
Если при обработке раскраски присутствуют #Region Something, то обработка не может распознать стили - их можно как то добавить?
переделал базовый скрипт с целью уменьшения размера выходного текста и учетом новых познаний в регулярных выражениях , основные изменения:
- убрал промежуточные замены на "#", теперь этот символ можно использовать в коде;
- добавил черезстрочное объединение стилей, если стиль не изменяется от строки к строке;
- убрал из стилей жирный шрифт, опять же для уменьшения количества форматных символов.

скрипт лежит там же: http://forum.oszone.net/post-511410-474.html

З.Ы. Если требуется совпадения стилей с SciTE нужно будет кое-где добавить теги [b]
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:33, 30-09-2007 | #520



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Открывая 7z архив пишет не удаётся открыть как архив. Можно ли его восстановить? DreDo Хочу все знать 4 01-12-2009 18:54
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. Vadikan AutoIt 1543 18-01-2009 10:46
[Архив - Часть 1.3] AutoIt скрипты biork AutoIt 503 09-06-2007 11:27
[Архив - Часть 1.2] AutoIt скрипты Dirk Diggler AutoIt 505 02-12-2006 11:00
[Архив - Часть 1.1] AutoIt скрипты EgOrus AutoIt 335 04-02-2006 16:58




 
Переход