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

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

Ответить
Настройки темы
[решено] HotKeySet() для одновременного управления несколькими скриптами

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


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

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


Один скрипт запускает другой (или несколько), как сделать чтобы по горячей клавише все скрипты вставали на паузу. Пауза HotKeySet("{PAUSE}", "TogglePause") срабатывает только в первом скрипте, я так понимаю хоткей захватывается им, а в остальных работает только если назначить другую кнопку. Как сделать на одной кнопке ?

Отправлено: 11:37, 25-08-2009

 

Аватара для FlatX007

Ветеран


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

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


Ну проще всего принажатиии кнопки "паузы" внести данные в INI файл.
Другие скрипты будут считывать данные из этого INI файла. Считывать можно этим AdlibEnable
Это сообщение посчитали полезным следующие участники:

Отправлено: 12:54, 25-08-2009 | #2



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

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


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


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

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


Вариант с INI файлом не совсем подходит, так как в момент нажатия паузы запущенные скрипты будут чего нибудь считать или ожидать или искать в цикле (которых много разных ) , и необходимо будет из всех циклов считывать этот INI файл что замедлит эти циклы (да и переписывать их надо будет). HotKeySet тем и хорош что позволяет вызвать функцию из любого места скрипта.

Отправлено: 13:21, 25-08-2009 | #3


Аватара для Medic84

$AutoITer


Автор проектов


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

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


Ты не понял. AdlibEnable работает сам по себе. Это замкнутый цикл, который вызывается каждые 100 мс (можно другое время задать) и собственно и служит для проверки чего либо. Мне кажется это хороший вариант...

-------

AutoIT Русское сообщество| Моя лаборатория

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

Отправлено: 14:18, 25-08-2009 | #4


Аватара для FlatX007

Ветеран


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

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


Да да это хороший вариант.

Незабывем про кнопку ...

Отправлено: 14:33, 25-08-2009 | #5


Аватара для Creat0R

Must AutoIt


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

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


Ну зачем же Ini, можно устроить интеракцию через GUI окно:

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

Global $iPaused = False

HotKeySet("{Pause}", "_TogglePause")

$hGUI = GUICreate("Test Script", 300, 200, 510)

$Button = GUICtrlCreateButton("Button", 20, 40, 60, 20)

GUISetState(@SW_SHOW, $hGUI)

_RunScript_Proc("Child Script")

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

Func _RunScript_Proc($sTitle)
    $sScript = _
        '#NoTrayIcon' & @CRLF & _
        '#include <GuiConstants.au3>' & @CRLF & _
        'Global $iPaused = False' & @CRLF & _
        '' & @CRLF & _
        'GUICreate("' & $sTitle & '", 300, 200, 200)' & @CRLF & _
        '$nInteract_Edit = GUICtrlCreateEdit("", -100, -100, 50, 20)' & @CRLF & _
        '' & @CRLF & _
        'GUISetState(@SW_SHOW)' & @CRLF & _
        '' & @CRLF & _
        'While 1' & @CRLF & _
        '   Switch GUIGetMsg()' & @CRLF & _
        '       Case $GUI_EVENT_CLOSE' & @CRLF & _
        '           Exit' & @CRLF & _
        '   EndSwitch' & @CRLF & _
        '   ' & @CRLF & _
        '   If GUICtrlRead($nInteract_Edit) <> "" Then' & @CRLF & _
        '       GUICtrlSetData($nInteract_Edit, "")' & @CRLF & _
        '       _TogglePause()' & @CRLF & _
        '   EndIf' & @CRLF & _
        'WEnd' & @CRLF & _
        '' & @CRLF & _
        'Func _TogglePause()' & @CRLF & _
        '   $iPaused = Not $iPaused' & @CRLF & _
        '   ' & @CRLF & _
        '   MsgBox(64, "", "_TogglePause from [' & $sTitle & '] script: " & $iPaused)' & @CRLF & _
        '   ' & @CRLF & _
        '   While $iPaused' & @CRLF & _
        '       Sleep(10)' & @CRLF & _
        '       If GUICtrlRead($nInteract_Edit) <> "" Then ExitLoop' & @CRLF & _
        '   WEnd' & @CRLF & _
        'EndFunc' & @CRLF

    $hFile = FileOpen(@TempDir & "\~Au3_Script.tmp", 2)
    FileWrite($hFile, $sScript)
    FileClose($hFile)

    Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & @TempDir & '\~Au3_Script.tmp"')
EndFunc

Func _TogglePause()
    $iPaused = Not $iPaused

    ControlSetText("Child Script", "", "Edit1", "_TogglePause")
    Sleep(100)
    MsgBox(64, "", "_TogglePause from [" & WinGetTitle($hGUI) & "] script: " & $iPaused)

    While $iPaused
        Sleep(10)
    WEnd
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

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

Отправлено: 17:05, 25-08-2009 | #6


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


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

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


Спасибо, работает, если бы AdlibEnable ещё бы неприостанавливал скрипт было бы вообще замечательно .

Eщё подскажите пожалуйста как вместо INI прикрутить События (Event), где на русском можно почитать про CreateEvent(), SetEvent() и их параметры или может быть пример приведёте.

Отправлено: 17:17, 25-08-2009 | #7


Аватара для Creat0R

Must AutoIt


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

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


А ещё как вариант, проверять в цикле других скриптов через _IsPressed()

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

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

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:23, 25-08-2009 | #8



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

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

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Javascript: конфликт между двумя скриптами morgan1991 Вебмастеру 5 23-06-2013 05:01
[решено] Активация Script Paused через HotKeySet sashadeg AutoIt 4 28-06-2009 16:40
[решено] Временное отключение HotKeySet sashadeg AutoIt 13 28-06-2009 07:52
Есть ли программы для одновременной работы с несколькими TV-тюнерами? dihlof0s Программное обеспечение Windows 0 25-06-2008 08:06
Преимущества CGI для одновременного конекта N посетителей FADE Вебмастеру 19 30-06-2004 18:44




 
Переход