|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [архив - Часть 2] AutoIt скрипты |
|
[архив - Часть 2] AutoIt скрипты
|
(*.*) Сообщения: 36569 |
Внимание! Тема переведена в архивное состояние Текущая тема http://forum.oszone.net/thread-98914.html (настоятельно рекомендуется к прочтению/поиску) Руководство к действию по работе c AutoIt. ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать Creat0R, для теста скопировал и переделал на - _CopyWithProgress("D:\$OEM$", "C:\9", $FOR_COPY, BitOR($FOF_NOCONFIRMMKDIR, $FOF_NOCONFIRMATION))
Вот какие ошибки... а за @OSVersion большое СПС ! |
------- Отправлено: 11:08, 11-12-2007 | #851 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать TERMINAL,
Цитата:
![]() Нужно так: ;Тут нужные константы #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 ; _CopyWithProgress("D:\$OEM$", "C:\9", $FOR_COPY, BitOR($FOF_NOCONFIRMMKDIR, $FOF_NOCONFIRMATION)) ;Это функция, без которой ничего работать не будет ;) 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 SetError($nError) Return False EndIf Return True EndFunc ;==>_CopyWithProgress |
|
------- Отправлено: 11:41, 11-12-2007 | #852 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать Creat0R, сори, протупил...всё получилось, но копирование происходит в верхнем левом углу
(можно в другое место?) А хотелось бы, чтобы выглядело это так и ниже после Выполняется подготовка дистрибутива Windows XP Professional Edition Service Pack 2 Plus шла шкала и время копирования.... примерно я хочу так |
------- Отправлено: 12:00, 11-12-2007 | #853 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать amel27
Цитата amel27:
Цитата Creat0R:
я так понимаю что $TabText = "название закладки". Если это так то в моем случае я делаю так $TabText="Дополнительно", но скрипт не переключает на данную закладку. |
||
Отправлено: 12:57, 11-12-2007 | #854 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать TERMINAL,
Цитата:
У меня уже есть рабочий механизм (кажется даже приводил уже здесь), но для твоей задачки нужно немного переделать, если такой вариант подходит, позже выложу. Kenwood3D, Цитата:
![]() $ConnPropTitle = 'Подключение по локальной сети' $Name = "Протокол Интернета (TCP/IP)" _OpenConnProperties($ConnPropTitle) WinWait($ConnPropTitle) $Index = ControlListView($ConnPropTitle, "", "SysListView321", "FindItem", $Name) ControlListView($ConnPropTitle, "", "SysListView321", "Select", $Index) ControlClick($ConnPropTitle, "", "Button4") Sleep(2500) Func _OpenConnProperties($sConnName) Local $oShellApp = ObjCreate('shell.application') Local $oCP = $oShellApp.Namespace (3), $Item For $Item In $oCP.Items If $Item.name = 'Сетевые подключения' Then For $Item In $Item.Getfolder.Items If $Item.name = $sConnName Then $Item.InvokeVerb ('Сво&йства') Next EndIf Next EndFunc Цитата:
|
|||
------- Отправлено: 17:07, 11-12-2007 | #855 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
$iIndex = _ControlTab($ConnPropTitle, "", "FindTab", $TabText, "", True) и всегда равняется 0 Цитата Creat0R:
![]() |
||
Последний раз редактировалось Kenwood3D, 12-12-2007 в 11:38. Отправлено: 00:15, 12-12-2007 | #856 |
![]() Ветеран Сообщения: 753
|
Профиль | Отправить PM | Цитировать Creat0R, ок, буду ждать... А выглядеть будет так как я хотел?
|
------- Отправлено: 11:01, 12-12-2007 | #857 |
Новый участник Сообщения: 39
|
Профиль | Отправить PM | Цитировать Народ, подскажите плииз - не могу понять в чем дело. Сделал скрипт для автоматической установки AutoCAD 2006 Russian: на основе скрипта для установки AutoCAD 2005, взятым на форуме MSFN. Для мониторинга вводимых команд использовал ScriptWriter. Все вроде работает, НО... только с жесткого диска
![]() При попытке запустить установку с DVD-ROM (одновременно с Unattended-установкой Windows), все срубается. Такое ощущение, что "кто-то" (что-то) жмёт на клавиши раньше записанных действий, и весь автоматизм нарушается. Попытки отмониторить весь процес уже при установке с DVD-ROM к успеху не привели - ScriptWriter тупо зависает, и не дает сохранить лог действий. Ничего больше в голову не приходит - я в AutoIT начинающий. И ведь при установке с винта все РАБОТАЕТ БЕЗ ПРОБЛЕМ - пробовал на разных компах... Что тут можно посоветовать? И еще. При выполнении даже скомпиленного AutoIT-скрипта в трее остается значок, который продолжает "висеть", когда весь процесс нарушается (Script paused). Этого можно как-нибудь избежать? В опциях компиллера (Aut2Exe) я ничего об этом не нашел ![]() |
Отправлено: 15:29, 12-12-2007 | #858 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Прикрепляю первую версию самодельной функции для копирования папок вместе с их содержимым...
Две проблемы которые нужно решить: 1) Более точный подсчёт оставшегося до окончания копирования времени (мне кажтся у меня вообще неверный подсчёт, делал давно). 2) AVI-Анимация останавливается на время копирования большого файла - это можно было бы решить если создание всего GUI повесить на отдельный скрипт, но тогда будет висеть два процесса для одной задачи ![]() P.S В скрипте используются много CallBack-вызовов.. что может повлиять на нагрузку памяти на время копирования. Для примера нужно распаковать архив, открыть файл Copy With Progress Example.au3, и выставить нужные пути. В самой функции (в качестве параметров) можно указать размеры окна и его местоположение на экране. TERMINAL, Цитата:
![]() |
|
------- Отправлено: 18:23, 12-12-2007 | #859 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать SergeyAV,
Цитата:
А также все Send() наверняка можно переделать в ControlClick, но точно сказать немогу, негде проверить. Цитата:
![]() |
||
------- Отправлено: 18:29, 12-12-2007 | #860 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Открывая 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 |
|