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

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

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

(*.*)


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


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

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


spooll,
Цитата:
желательно опробовать на паре компов
Ага, мнеб один мой родной (единственный) в порядок привести...

Попробую скачаю, завтра отпишусь о результатах..

Maza Faka,
Цитата:
2-ой вариант, тоже не работает
У меня работает, ты просто не считаешь счётчики в двух циклах... я так понял нужно во всех каталогах удалить все файлы?

Код: Выделить весь код
Dim $PathFile[2][2] = [["c:\test", "c:\1"], ["soccer5.bmp", "soccer9.bmp"]]

Dim $Del = 0

For $i = 0 To UBound($PathFile)-1
    For $j = 0 To UBound($PathFile)-1
        $Del += DeleteFile($PathFile[0][$i], $PathFile[1][$j])
    Next
Next

MsgBox(64, "Result", $Del & " files deleted")

Func DeleteFile($path, $delFile)
    Local $count = 0
    $search = FileFindFirstFile($path & "\*.*")
    While 1
        $file = FileFindNextFile($search)
        If @error Then ExitLoop
        $Full_file = $path & "\" & $file
        If FileGetAttrib($Full_file) = "D" Then
            $count += DeleteFile($Full_file, $delFile)
        ElseIf $file = $delFile Then
            $count += FileDelete($Full_file)
        EndIf
    WEnd
    FileClose($search)
    Return $count
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

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

Отправлено: 23:29, 20-08-2007 | #341



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

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


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

Ветеран


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

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


Как правильно изменять размерность массива? Вот так не работает:
Код: Выделить весь код
#include <Array.au3>
$var = DriveGetDrive("All")

_ArrayDelete($var, 1)
$var[0] -= 1
ReDim $var[$var[0]-1]

MsgBox(0, "", $var[0])
For $i = 1 To $var[0]
    MsgBox(64, "", $var[$i])
Next

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


Отправлено: 11:21, 21-08-2007 | #342


Googler


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

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


Цитата Maza Faka:
Вот так не работает
а зачем ReDim()?.. _ArrayDelete() и без него уменьшает размерность на 1

Отправлено: 11:35, 21-08-2007 | #343


Аватара для Creat0R

Must AutoIt


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

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


spooll

Кажется нашёл твою проблему(ы)...

У тебя видимо в настройках автоматом подставляется Организация:, если там пусто (у тех у кого этого не происходит), то кнопка Далее не активна, отсюда могут быть многие зависания.
Поэтому нужно проверять это дело...

Далее, окно с подтверждением этой информации, и многие другие окна почему то требует активирования чтобы нормально нажать кнопку..

У тебя ожидается окно "Создание нового каталога", как ты уверен что оно появится? а вдруг каталог уже существует?

С такими скриптами нужно стараться учитывать все варианты

Вот что у меня получилось:

Код: Выделить весь код
Opt("RunErrorsFatal", 0)
Opt("WinTitleMatchMode", -4)

$RegRead1CPath = RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\1C\1Cv7\7.7\1С:Предприятие для SQL", "1CPath")
If FileExists($RegRead1CPath) Then Exit

$1c_InstallPath = "\\192.168.11.198\Distrib\1s_install"

BlockInput(1)

Run($1c_InstallPath & "\B770023\Disk1\setup.exe")
If @error Then Quit()

WinWait("Добро пожаловать", "Добро пожаловать в программу установки 1С:Предприятия.")
ControlClick("Добро пожаловать", "Добро пожаловать в программу установки 1С:Предприятия.", "Button1")

WinWait("Выбор варианта установки", "Выберите вариант установки программы 1С:Предприятие.")
ControlClick("Выбор варианта установки", "Выберите вариант установки программы 1С:Предприятие.", "Button6")

$UserInfoInputText = "Введите Ваше имя и название Вашей организации."
WinWait("Информация о пользователе", $UserInfoInputText)
$GetText_1 = ControlGetText("Информация о пользователе", $UserInfoInputText, "Edit1")
$GetText_2 = ControlGetText("Информация о пользователе", $UserInfoInputText, "Edit2")
If $GetText_1 = "" Then ControlSetText("Информация о пользователе", $UserInfoInputText, "Edit1", @UserName)
If $GetText_2 = "" Then ControlSetText("Информация о пользователе", $UserInfoInputText, "Edit2", @UserName)
ControlClick("Информация о пользователе", "Введите Ваше имя и название", "Button2")

WinWait("Информация о пользователе", "Верна ли информация для регистрации?")
WinActivate("Информация о пользователе", "Верна ли информация для регистрации?")
ControlClick("Информация о пользователе", "Верна ли информация для регистрации?", "Button1")

WinWait("Выбор каталога для установки", "Программа установки поместит 1С:Предприятие в выбранный каталог.")
$GetPathText = ControlGetText("Выбор каталога для установки", _
    "Программа установки поместит 1С:Предприятие в выбранный каталог.", "Static2")
WinActivate("Выбор каталога для установки", "Программа установки поместит 1С:Предприятие в выбранный каталог.")
ControlClick("Выбор каталога для установки", "Программа установки поместит 1С:Предприятие в выбранный каталог.", "Button1")

If Not FileExists($GetPathText) Then
    WinWait("Создание нового каталога", "Вы ввели следующее имя каталога:", 5)
    If WinExists("Создание нового каталога", "Вы ввели следующее имя каталога:") Then
        WinActivate("Создание нового каталога", "Вы ввели следующее имя каталога:")
        ControlClick("Создание нового каталога", "", "Button1")
    EndIf
EndIf

WinWait("Выбор программной группы", "Выберите из существующих или")
WinActivate("Выбор программной группы", "Выберите из существующих или")
ControlClick("Выбор программной группы", "Выберите из существующих или", "Button2")

WinWait("Установка 1С:Предприятия", "Программа установки скопировала файлы")
WinActivate("Установка 1С:Предприятия", "Программа установки скопировала файлы")
ControlClick("Установка 1С:Предприятия", "Программа установки скопировала файлы", "Button2")

WinWait("Установка 1С:Предприятия", "Установка программы 1С:Предприятие успешно завершена.")
WinActivate("Установка 1С:Предприятия", "Установка программы 1С:Предприятие успешно завершена.")
ControlClick("Установка 1С:Предприятия", "Установка программы 1С:Предприятие успешно завершена.", "Button1")

Run($1c_InstallPath & "\B770025\Disk1\setup.exe")
If @error Then Quit()

WinWait("Добро пожаловать", "Добро пожаловать в программу установки")
WinActivate("Добро пожаловать", "Добро пожаловать в программу установки")
ControlClick("Добро пожаловать", "Добро пожаловать в программу установки", "Button1")

WinWait("Список установленных программ", "Из списка найденных на данном компьютере")
ControlClick("Список установленных программ", "Из списка найденных на данном компьютере", "Button4")

WinWait("Обновление 1С:Предприятия", "При работе с сетевыми версиями")
WinActivate("Обновление 1С:Предприятия", "При работе с сетевыми версиями")
ControlClick("Обновление 1С:Предприятия", "При работе с сетевыми версиями", "Button2")

WinWait("Обновление 1С:Предприятия", "Обновление программы 1С")
WinActivate("Обновление 1С:Предприятия", "Обновление программы 1С")
ControlClick("Обновление 1С:Предприятия", "Обновление программы 1С", "Button1")
BlockInput(0)

Run($1c_InstallPath & "\B770025\1C_patch_7725\1Cv77SQL_025_Patch.exe")
If @error Then Quit()

$PathTitle = "regexp=Патч 1С:Предприятие [0-9]"

WinWait($PathTitle, "Вы запустили программу")
ControlClick($PathTitle, "Вы запустили программу", "Button1")

WinWait("PatchWise Updater", "ОК")
WinActivate("PatchWise Updater", "ОК")
ControlClick("PatchWise Updater", "ОК", "Button1")

WinWait($PathTitle, "&Обновить")
ControlClick($PathTitle, "&Обновить", "Button2")

Run($1c_InstallPath & "\link.cmd")

Quit()

Func Quit()
    BlockInput(0)
    Exit
EndFunc
Maza Faka,
Если я правильно понял, то в этом случае можно вообще не трогать массив:

Код: Выделить весь код
$var = DriveGetDrive("All")

MsgBox(0, "", $var[0])

For $i = 2 To $var[0]
    MsgBox(64, "", $var[$i])
Next

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

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

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

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

Отправлено: 15:14, 21-08-2007 | #344


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

Ветеран


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

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


Creat0R
Цитата Creat0R:
можно вообще не трогать массив:
$var = DriveGetDrive("All") я привёл для примера, просто интересует корректное изменение размерности массива при помощи "Redim".

amel27,
Цитата amel27:
_ArrayDelete() и без него уменьшает размерность на 1
Да, он удаляет элемент из массива, но размерность остаётся прежней:
Код: Выделить весь код
#include <Array.au3>
$var = DriveGetDrive("All")

_ArrayDelete($var, 1)

MsgBox(64, "", $var[0]) ;Размерность остаётся неизменной
For $i = 1 To UBound($var) - 1
    MsgBox(64, "", $var[$i])
Next
Приведите ПЛЗ пример с использованием "Redim".

Отправлено: 16:39, 21-08-2007 | #345


Аватара для Creat0R

Must AutoIt


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

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


Maza Faka,
Цитата:
размерность остаётся прежней:
Это не размерность, а значение в нулевом элементе, видимо ошибка _ArrayDelete()...

Цитата:
Приведите ПЛЗ пример с использованием "Redim".
Код: Выделить весь код
#include <Array.au3>

Dim $Array[5] = [4, 1, 2, 3, 4]

_ArrayDisplay($Array)

ReDim $Array[4]
$Array[0] = 3

_ArrayDisplay($Array)

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

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

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

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

Отправлено: 17:37, 21-08-2007 | #346


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

Ветеран


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

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


Creat0R
Спасибо за пример.
Так вроде тоже работает:
Код: Выделить весь код
#include <Array.au3>

Dim $Array[5] = [4, 1, 2, 3, 4]

_ArrayDisplay($Array)

ReDim $Array[4]
;$Array[0] = 4

_ArrayDisplay($Array)

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


Отправлено: 18:42, 21-08-2007 | #347


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

Ветеран


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

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


Как сделать, что бы работал $Gui_Event_Close в цикле "For"?

Код: Выделить весь код
#include <GUIConstants.au3>

$gui = GUICreate("My GUI", 300, 200, -1, -1)
$Button = GUICtrlCreateButton("Start", 115, 20, 70)
$Progress = GUICtrlCreateProgress(10, 60, 280, 15)
GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()

        Select
    Case $msg = $Button
        While $msg <> $GUI_EVENT_CLOSE
            $msg = GUIGetMsg()
            For $i = 10 To 100 Step 10
                Sleep(300)
                GUICtrlSetData($Progress, $i)
                If $i = 100 Then $i = 0
                Next
            WEnd

                Case $msg = $Gui_Event_Close
            ExitLoop
        EndSelect
    WEnd

Отправлено: 19:33, 21-08-2007 | #348


Аватара для Creat0R

Must AutoIt


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

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


Maza Faka,
Цитата:
Так вроде тоже работает:
Тут же не вопрос о работоспособности - Я просто привёл пример, и то что ты закоментировал, как раз и предназначено для присвоения нового значения размерности массива нулевому элементу.

Кстати, amel27 как то у меня спрашивал, откуда у меня такое недоверие к $Array[0], вот именно функция _ArrayDelete() и доказывает, что надёжнее использовать Ubound($Array)-1

Вот ещё пример с ReDim...

Код: Выделить весь код
#include <Array.au3>

Dim $NewArray[1] ;Массив практический пуст...

;Отобразим его...
_ArrayDisplay($NewArray)

; А теперь заполним добавляя каждый раз новый элемент
For $i = 1 To 10
    ReDim $NewArray[ UBound($NewArray) + 1 ]
    $NewArray[ UBound($NewArray) - 1 ] = "Array Element Data #" & $i
Next
$NewArray[0] = UBound($NewArray) - 1

;Отобразим его снова, но уже заполненный ;)...
_ArrayDisplay($NewArray)

Цитата:
Как сделать, что бы работал $Gui_Event_Close в цикле "For"?
Уменьшить Sleep (до 30 к примеру) и проверять GUIGetMsg() в теле цикла...
Хотя я бы в данном случае использовал Events (события) метод...

Код: Выделить весь код
#include <GUIConstants.au3>

$gui = GUICreate("My GUI", 300, 200, -1, -1)
$Button = GUICtrlCreateButton("Start", 115, 20, 70)
$Progress = GUICtrlCreateProgress(10, 60, 280, 15)
GUISetState(@SW_SHOW)

While 1
    $msg = GUIGetMsg()
    Select
        Case $msg = $Button
            For $i = 10 To 100 Step 1
                If GUIGetMsg() = $GUI_EVENT_CLOSE Then ExitLoop 2
                Sleep(30)
                GUICtrlSetData($Progress, $i)
                If $i = 100 Then $i = 0
            Next
        Case $msg = $GUI_EVENT_CLOSE
            ExitLoop
    EndSelect
WEnd

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

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

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

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

Отправлено: 00:27, 22-08-2007 | #349


Аватара для Creat0R

Must AutoIt


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

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


А многие ли знают о том, что скомпилированный скрипт работает почти как полноценный интерпритатор кода AutoIt?
Т.е если мы скомпилируем скрипт, перенесём екзешник на компьютер где нет аутоита, и совершенно в любом файле (текстового характера), впишем код с синтаксисом AutoIt, то примерно следующая строка сможет выполнить этот файл как любой au3 файл где установлен AutoIt:

Код: Выделить весь код
Run(@AutoItExe & ' /ErrorStdOut /AutoIt3ExecuteScript "test.app"')
Это же открывает ворота в совсем иное измерение!
Таким образом к примеру, можно даже создавать собственный (примитивный однако) язык программирования .
А ещё можно выполнять код программы без вывода критических сообщении (если скрипт выпадает).

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

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

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


Отправлено: 01:09, 22-08-2007 | #350



Компьютерный форум 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




 
Переход