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

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

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

(*.*)


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


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

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

 

Аватара для spooll

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


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

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


Цитата:
If FileExists(@ProgramFilesDir & "\MyProgram\Program.exe") Then
С полным путем получилось!Спасибо огромное

Отправлено: 15:35, 07-08-2007 | #241



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

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


Аватара для Creat0R

Must AutoIt


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

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


amel27,
Цитата:
Одно радует - в "классическом" варианте папка всегда открывается. Можешь сам проверить - попробуй в CallBack-функции вместо:
У меня с этой заменой вообще не задаётся начальный каталог в "классическом" стиле

Цитата:
хотя первую-то строчку наверное надо оставить?
У меня и без неё всё нормально работает.

P.S
У меня такой вопрос - если я использую новый стиль, а скрипт будет запущен на старой машине (где он не поддерживается, т.е где ещё нету IE 5), что произойдёт с этой функцией? она перейдёт в старый стиль, или сразу вернёт ошибку? или вообще скрипт выпадет?

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

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

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:16, 07-08-2007 | #242


Аватара для spooll

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


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

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


Вот еще ребят!Почему-то не работает время winWaitActive , т.е когда я указываю время:

PHP код: Выделить весь код

WinWaitActive ("notepad" "new document" 100000

то если даже через секунду после запуска, я это окно сделаю активным, то все остальные команды, как send enter и т.д уже не работают на этом окне !

Отправлено: 17:36, 07-08-2007 | #243


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

Ветеран


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

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


spooll
У меня работает:
Код: Выделить весь код
WinWaitActive("Безымянный - Блокнот", "", 100000)
ControlSend("Безымянный - Блокнот", "", "Edit1", "Hello world")
Проверь правильно ли указан заголовок окна.

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


Отправлено: 18:02, 07-08-2007 | #244


Пользователь


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

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


spooll
Зачем выставлять сто тысяч секунд? (Обычно 2-3 секунды бывает достаточно.)
Код: Выделить весь код
$ret = WinWaitActive ("Текстовый документ", "" , 3)
If $ret = 1 Then
;~ 	Send()  и т.д
Else
	MsgBox(0,"","Команда не дождалась активного окна")
Endif
А лучше не дожидаться активности окна, а активизировать его принудительно:
Код: Выделить весь код
$ret = WinWait ("Текстовый документ", "" , 3)
If $ret = 1 Then
	WinActivate("Текстовый документ","")
	Sleep(100)
;~ 	Send()  и т.д
Else
	MsgBox(0,"","Окно не существует")
Endif
Это сообщение посчитали полезным следующие участники:

Отправлено: 18:29, 07-08-2007 | #245


Аватара для spooll

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


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

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


Maza Faka,
да заголовок тот, то что показал Diamond, вроде подходит, только это придется все перебивать чтоли, чесно я еще не задавал никогда переменные типа
Цитата Diamond:
$ret
Просто я что хочу, чтобы при утсановки пользователю на комп, он случайно не сбил активность окна, тем самым нарушив работу скрипта, у меня есть вот что:
Код: Выделить весь код
If FileExists("C:\Program Files\1Cv77\BIN\1CV7s.exe") Then
     Exit
     Else
Run("\\192.168.11.198\Distrib\1s_install\B770023\Disk1\setup.exe")
WinWaitActive("Добро пожаловать", "Добро пожаловать в программу установки")
Send("{ENTER}")
WinWaitActive("Выбор варианта установки", "Выберите вариант установки программы")
Send("{ENTER}")
WinWaitActive("Информация о пользователе", "Введите Ваше имя и название")
Send("{ENTER}")
WinWaitActive("Информация о пользователе", "Вы сообщили следующую информацию")
Send("{ENTER}")
WinWaitActive("Выбор каталога для установки", "Программа установки поместит 1С")
Send("{ENTER}")
WinWaitActive("Создание нового каталога")
Send("{ENTER}")
WinWaitActive("Выбор программной группы", "Выберите из существующих или")
Send("{ENTER}")
WinWaitActive("Установка 1С:Предприятия", "Программа установки скопировала файлы")
Send("{ENTER}")
WinWaitActive("Установка 1С:Предприятия", "Установка программы 1С")
Send("{ENTER}")
Run("\\192.168.11.198\Distrib\1s_install\B770025\Disk1\setup.exe")
WinWaitActive("Добро пожаловать", "Добро пожаловать в программу установки")
Send("{ENTER}")
WinWaitActive("Список установленных программ", "Из списка найденных на данном компьютере")
Send("{ENTER}")
WinWaitActive("Обновление 1С:Предприятия", "При работе с сетевыми версиями")
Send("{ENTER}")
WinWaitActive("Обновление 1С:Предприятия", "Обновление программы 1С")
Send("{ENTER}")
Run("\\192.168.11.198\Distrib\1s_install\B770025\1C_patch_7725\1Cv77SQL_025_Patch.exe")
WinWaitActive("Патч 1С:Предприятие 7.7.025", "Вы запустили программу")
ControlClick ("Патч 1С:Предприятие 7.7.025", "Вы запустили программу", "Button1")
WinWaitActive("PatchWise Updater")
Send("{ENTER}")
ControlClick ("Патч 1С:Предприятие 7.7.025", "Вы запустили программу", "Button2")
EndIf
Это выходит перед каждой строкой нужно ставить WinActivate +заголовок последующего окно +время в секундах сколько ему ждать?! Просто вроде несложная задача и хотелось бы сначала попроще . Спасибо что помогаете.

Отправлено: 18:55, 07-08-2007 | #246


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

Ветеран


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

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


spooll
Цитата spooll:
Это выходит перед каждой строкой нужно ставить WinActivate
Нет. Вставь в начало скрипта
Код: Выделить весь код
BlockInput(1)
а в конец скрипта
Код: Выделить весь код
BlockInput(0)
пока приложение не установится, ввод будет заблокирован.
Это сообщение посчитали полезным следующие участники:

Отправлено: 19:16, 07-08-2007 | #247


Аватара для Creat0R

Must AutoIt


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

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


spooll,
Цитата:
чтобы при утсановки пользователю на комп, он случайно не сбил активность окна
Советую использовать вместо Send() - ControlSend(), ну или ControlClick(), это действует даже для не активных окон.

Можно ещё поставить на выполнение чтобы все окна постоянно сворачивалось (хотя не идеальный вариант):

Код: Выделить весь код
AdlibEnable("MinimizeWindows", 100)

Func MinimizeWindows()
	WinMinimizeAll()
EndFunc
а потом в конце восстановить всё:

Код: Выделить весь код
WinMinimizeAllUndo()

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

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

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:45, 07-08-2007 | #248


Аватара для Creat0R

Must AutoIt


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

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


Как можно узнать заголовок окна сохранения?
На каждой системе, в зависимости от язка системы, этот заголовок будет разным, на английской к примеру Save As, на русской Сохранить как, а как быть с системами на других языках? может можно как то получить это имя с конфигов системы? где оно всё хранится?

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

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

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


Отправлено: 05:32, 08-08-2007 | #249


Googler


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

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


Creat0R
Цитата:
У меня с этой заменой вообще не задаётся начальный каталог в "классическом" стиле
дык в классике она и не нужна - там каталог, выбранный по $BFFM_SETSELECTION итак открывается, а в "новом стиле" выбирается но остается закрытым и если нужен файл приходится кликать плюсик... Кстати, это сообщение не поддерживается не только старым стилем, но и Windows 2000.
Цитата:
У меня и без неё всё нормально работает
хм... у меня тоже, тогда уберу... попозжа
Цитата:
если я использую новый стиль, а скрипт будет запущен на старой машине (где он не поддерживается, т.е где ещё нету IE 5), что произойдёт с этой функцией? она перейдёт в старый стиль, или сразу вернёт ошибку? или вообще скрипт выпадет?
Если рассуждать логически, то отсутствие поддержки "нового стиля" равносильно отсутствию поддержки флага $BIF_NEWDIALOGSTYLE, из чего следует что должен отработать старый стиль. Кстати, для проверки версии достаточно вернуть версию "comctl32.dll", линк: http://msdn2.microsoft.com/en-us/library/ms649534.aspx

На заметку. Незадействованные возможности SHBrowseForFolder():

- сообщение $BFFM_SETEXPANDED. По ходу толку от него мало, так как работает глючно (у меня).
- сообщение $BFFM_VALIDATEFAILED. Имеет смысл только при использовании поля редактирования (флаг $BIF_EDITBOX), можно к примеру выводить текст предупреждения или затенять "Ок" если набран несуществующий путь.... реализуется просто, вот только надо ли?
- сообщение $BFFM_SETOKTEXT, поддержка минимальная (только для $BIF_RETURNONLYFSDIRS), для расширенной проверки атрибутов выбранного элемента придется ваять свой вариант CallBack-функции (как в _MyFSFCallbackProc)... либо нужно сочинять свой набор флагов и через него передавать какие типы нам нужны;
- есть возможность по ходу возвращать код картинки (иконки) выбранного элемента;
- есть возможность фильтрации отображаемых элементов, это более мощное средство чем затенение "Ок", но средствами одного скрипта нереализуемо, т.к. нужно создавать свой COM-объект.... как варианты: 1) использовать DLL, 2) использовать скрипты WSH. Первый сложней в реализации, но быстрей, второй - проще (через VBS-скрипт), но дюже медленный.... особенно если учесть, что объект будет вызываться для КАЖДОГО элемента списка.

Отправлено: 05:36, 08-08-2007 | #250



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




 
Переход