|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:. |
|
[Архив - Часть 3] AutoIt скрипты .:[общие вопросы]:.
|
(*.*) Сообщения: 36560 |
Внимание! В связи с созданием отдельного форума по AutoIt, эта тема переводится в архивное состояние. Если у вас есть вопрос, создайте новую тему или поднимите существующую, если в ней обсуждается аналогичная проблема. Пожалуйста, не создавайте тем с названием "Помогите!" или "Нужна помощь по AutoIt". Это и так понятно ![]() ![]() Сайт программы Русская справка Коллекция AutoIt скриптов от Sanja Alone Коллекция AutoIt скриптов от MSFN (могут быть устаревшие). Справочник по командам rundll32 (команды запуска диалоговых окон и не только...) AutoIt скрипты - введение и FAQ (статья содержит вводную информацию по AutoIt, а также ответы на ЧаВо). Архивы старых тем по AutoIt или они же в 7z архиве (версии для печати) - 846 кб (настоятельно рекомендуется к прочтению/поиску) (он же прикреплен в шапке) Данная тема предназначена для общих вопросов по AutoIt. Вопросы по установке приложений при помощи AutoIt следует задавать в соответствии с правилами форума "Автоматическая установка приложений". Таким образом, если вы хотите узнать как установить Winamp 5.x при помощи AutoIt, то создайте тему [autoit] Winamp 5.х (если таковой еще нет на форуме). Проверить наличие тем можно при помощи поиска или фильтров. Цитата Vadikan:
|
||
------- Отправлено: 00:02, 05-02-2006 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Иск,
Во-первых это очень и очень не практично в цикле вот так записывать интенсивно в ини-файл, если очеь нужно, то делать это хотябы раз в несколько (десятков) секунд. По поводу прерывания цикла. Это можно сделать простой проверкой переменной, присваивать ей значение при запуске фуннкции: #include <GUIConstants.au3> #include <Misc.au3> #include <Fade.au3> Global $iLoopIsPaused = False Opt("GUIOnEventMode", 1) GUICreate("Test", 250, 200, 1024, 0) GUISetBkColor(0xFFFFFF) GUISetOnEvent($GUI_EVENT_CLOSE, "SpecialEvents") GUISetOnEvent($GUI_EVENT_MINIMIZE, "SpecialEvents") GUISetOnEvent($GUI_EVENT_RESTORE, "SpecialEvents") GUISetState(@SW_SHOW) $tab = GUICtrlCreateTab(10, 10, 230, 180) $tab2 = GUICtrlCreateTabItem("3") GUICtrlCreateLabel("3", 30, 53, 130, 20) $tab2combo = GUICtrlCreateCombo("", 170, 50, 60, 40) GUICtrlSetData(-1, "40|30|20", "30") ; default 80% $tab1 = GUICtrlCreateTabItem("2") GUICtrlCreateLabel("2", 30, 53, 130, 20) $tab1combo = GUICtrlCreateCombo("", 170, 50, 60, 40) GUICtrlSetData(-1, "70|80|90", "90") ; default 80% $MHP = GUICtrlRead($tab1combo) $tab0 = GUICtrlCreateTabItem("1") GUICtrlSetState(-1, $GUI_SHOW) ; will be display first GUICtrlCreateLabel("X", 30, 53, 50, 20) GUICtrlCreateLabel("Y", 30, 103, 50, 20) $tab0Start = GUICtrlCreateButton("Save and Start", 10, 150, 115, 20) GUICtrlSetOnEvent(-1, "OKPressed") $tab0Exit = GUICtrlCreateButton("Exit", 125, 150, 115, 20) GUICtrlSetOnEvent(-1, "CancelPressed") $tab01input = GUICtrlCreateInput("X", 80, 50, 90, 20) $tab02input = GUICtrlCreateInput("Y", 80, 100, 90, 20) GUICtrlCreateTabItem("") ; end tabitem definition GUISetState() $Acc = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "X", "") GUICtrlSetData($tab01input, $Acc) $Pass = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "Y", "") GUICtrlSetData($tab02input, $Pass) While 1 Sleep(5000) ;Ждём 5 секунд If Not $iLoopIsPaused Then Write() WEnd Func Write() IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "X", GUICtrlRead($tab01input)) IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "Y", GUICtrlRead($tab02input)) $MHP = GUICtrlRead($tab1combo) Switch $MHP Case "70" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "70") Case "80" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "80") Case "90" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "90") EndSwitch $MHPex = GUICtrlRead($tab2combo) Switch $MHPex Case "20" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "20") Case "30" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "30") Case "40" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "40") EndSwitch EndFunc ;==>Write Func OKPressed() $iLoopIsPaused = True ;Это "сообщит" циклу что функцию Write() не нужно запускать ;Тут мы выполняем что нам нужно $iLoopIsPaused = False ;Тут мы как бы снова даём циклу "понять" что функцию Write() нужно запускать EndFunc ;==>OKPressed Func CancelPressed() Exit EndFunc ;==>CancelPressed Func SpecialEvents() Switch @GUI_CtrlId Case $GUI_EVENT_CLOSE Exit Case $GUI_EVENT_MINIMIZE Case $GUI_EVENT_RESTORE EndSwitch EndFunc ;==>SpecialEvents |
------- Отправлено: 17:26, 05-09-2008 | #841 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Я же говорю, 2 дня как разбираюсь с этим. Все приходит с опытом, а пока метлой пытаюсь рисовать пейзажи, образно выражаясь
![]() |
Отправлено: 17:35, 05-09-2008 | #842 |
Ветеран Сообщения: 604
|
Профиль | Отправить PM | Цитировать Creat0R
Цитата:
Я для себя эту проблему решил отлавливая сообщение $WM_COMMAND, очень удобно и быстро при плотных циклах ![]() |
|
------- Отправлено: 17:37, 05-09-2008 | #843 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
Есть какой-нибудь способ именно прервать выполнение цикла на запись кнопкой "старт" и перейти на основной скрипт? |
|
Отправлено: 17:56, 05-09-2008 | #844 |
![]() Старожил Сообщения: 232
|
Профиль | Сайт | Отправить PM | Цитировать Что не так?:
#include <GUIConstantsEx.au3> #Include <Constants.au3> Global $Stop = False Opt("TrayAutoPause",0) Opt("TrayMenuMode", 1) ;Создания диалогового окна $GUI_Main = GUICreate ( "ProcessControl 1.0", 400, 230, 45, 45, -1 ) $CTRL_btn_stt = GUICtrlCreateButton ( "Start", 20, 155, 80, 23 ) ;Кнопка Start $CTRL_btn_stp = GUICtrlCreateButton ( "Stop", 110, 155, 80, 23 ) ;Кнопка Stop $CTRL_btn_ext = GUICtrlCreateButton ( "Exit", 200, 155, 80, 23 ) ;Кнопка Exit $CTRL_btr_tray = GUICtrlCreateButton ( "Minimizate", 290, 155, 80, 23) ;Кнопка Minimizate GUICtrlCreatePic ( "resources\pic.bmp", 0, 0, 400, 72) GUICtrlCreateLabel ( "Введите название процесса в формате *.exe, где * имя.", 30, 80, 350, -1) ;Текст GUISetState(@SW_SHOW, $GUI_Main) ;Активация кнопки Start (функции ProcessControl) While 1 $msg2 = GUIGetMsg(1) Select Case $msg2[0] = $GUI_EVENT_CLOSE ExitLoop Case $msg2[0] = $CTRL_btn_ext Exit Case $msg2[0] = $CTRL_btn_stp $Stop = 15 Case $msg2[0] = $CTRL_btn_stt ProcessControl() EndSelect WEnd Func ProcessControl() $i=ProcessWait("Explorer.exe")=0 Do If $Stop = True Then $Stop = False ExitLoop EndIf $i=$i+1 ProcessWait("Explorer.exe") ProcessClose("Explorer.exe") $PID = ProcessExists("Explorer.exe") If $PID Then ProcessClose ($PID) EndIf until $i=1111111 EndFunc |
------- Отправлено: 18:24, 05-09-2008 | #845 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Maza Faka:
Цитата Иск:
Цитата ganselo:
См. мой пример ![]() |
|||
------- Отправлено: 18:25, 05-09-2008 | #846 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Ну, оболочка мне нужна для того что бы выбрать переменные, а потом уже основываясь на них выполняется работа дальше. переменные эти всегда одни и те-же, меняются во вкладках. Дальше скрипт уже использует то , что я выбрал конкретно в этот раз. Помнится, в школьные годи бейсик учил, там была команда GOTO, может и тут есть что-нить похожее, что бы перенаправило по нажатию кнопки дальше. Функцию внутрь функции же нельзя вставить, а у меня там и функции, и циклы дальше идут...Просто нажать на кнопку "ок" и продолжить выполнение.
|
Отправлено: 18:35, 05-09-2008 | #847 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать |
------- Отправлено: 20:04, 05-09-2008 | #848 |
Новый участник Сообщения: 14
|
Профиль | Отправить PM | Цитировать Цитата Creat0R:
![]() ![]() |
|
Отправлено: 20:22, 05-09-2008 | #849 |
Must AutoIt Сообщения: 3054
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Иск:
Я если честно задрудняюсь понять проблему... * В чём суть постоянной записи инфы в ini-файл? * И что такое Fade.au3 в начале скрипта? Может проще будет без режима OnEvent? Типа такого: #include <GUIConstants.au3> #include <Misc.au3> ;#include <Fade.au3> GUICreate("Test", 250, 200, 0, 0) GUISetBkColor(0xFFFFFF) $tab = GUICtrlCreateTab(10, 10, 230, 180) $tab2 = GUICtrlCreateTabItem("3") GUICtrlCreateLabel("3", 30, 53, 130, 20) $tab2combo = GUICtrlCreateCombo("", 170, 50, 60, 40) GUICtrlSetData(-1, "40|30|20", "30") ; default 80% $tab1 = GUICtrlCreateTabItem("2") GUICtrlCreateLabel("2", 30, 53, 130, 20) $tab1combo = GUICtrlCreateCombo("", 170, 50, 60, 40) GUICtrlSetData(-1, "70|80|90", "90") ; default 80% $MHP = GUICtrlRead($tab1combo) $tab0 = GUICtrlCreateTabItem("1") GUICtrlSetState(-1, $GUI_SHOW) ; will be display first GUICtrlCreateLabel("X", 30, 53, 50, 20) GUICtrlCreateLabel("Y", 30, 103, 50, 20) $tab0Start = GUICtrlCreateButton("Save and Start", 10, 150, 115, 20) $tab0Exit = GUICtrlCreateButton("Exit", 125, 150, 115, 20) $tab01input = GUICtrlCreateInput("X", 80, 50, 90, 20) $tab02input = GUICtrlCreateInput("Y", 80, 100, 90, 20) GUICtrlCreateTabItem("") ; end tabitem definition $Acc = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "X", "") GUICtrlSetData($tab01input, $Acc) $Pass = IniRead(@MyDocumentsDir & "\test.ini", "Enter", "Y", "") GUICtrlSetData($tab02input, $Pass) GUISetState(@SW_SHOW) AdlibEnable("Write", 5000) ;Это будет запускать функцию Write() каждые 5 сек. While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE, $tab0Exit Exit Case $tab0Start AdlibDisable() ;Отключаем временно запись данных Opt("GUIOnEventMode", 1) ;Это чтобы события не обрабатывались ;Тут мы выполняем что нам нужно, цикл при этом не будет выполняться ;Например цикл + Запуск функции $iCounter = 0 $iRandom = Random(0, 100, 1) While $iCounter < 100 $iCounter += 1 ConsoleWrite($iCounter & @LF) Sleep(100) If $iCounter = $iRandom Then TempFunc($iCounter) ;Запуск функциии в случайном порядке :) WEnd AdlibEnable("Write", 5000) ;Включаем запись данных Opt("GUIOnEventMode", 0) ;Включаем обратно обработку событии EndSwitch WEnd Func Write() IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "X", GUICtrlRead($tab01input)) IniWrite(@MyDocumentsDir & "\test.ini", "Enter", "Y", GUICtrlRead($tab02input)) $MHP = GUICtrlRead($tab1combo) Switch $MHP Case "70" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "70") Case "80" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "80") Case "90" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HP", "90") EndSwitch $MHPex = GUICtrlRead($tab2combo) Switch $MHPex Case "20" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "20") Case "30" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "30") Case "40" IniWrite(@MyDocumentsDir & "\test.ini", "Pup", "HPex", "40") EndSwitch EndFunc Func TempFunc($iParam) ;Функция для примера MsgBox(64, "TempFunc()", "TempFunc() Вызов функции (" & $iParam & ")") EndFunc |
|
------- Отправлено: 22:06, 05-09-2008 | #850 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[архив - Часть 2] AutoIt скрипты | Vadikan | AutoIt | 985 | 21-01-2008 09:58 | |
Вопрос - [Архив] Антивирусные программы - ОБЩИЕ ВОПРОСЫ | FOX RED | Защита компьютерных систем | 67 | 21-11-2007 15:05 | |
[Архив - Часть 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 |
|