Что нового

Как остановить скрипт?

Tapok

Новичок
Сообщения
203
Репутация
0
Как остановить скрипт, если Ctrl-Break не помогает, а в скрипте длительный цикл?
 

joiner

Модератор
Локальный модератор
Сообщения
3 372
Репутация
589
Код:
HotKeySet('{ESC}','_out');клавиша выхода - Esc
While 1
	Sleep(10)
WEnd
Func _out()
	Exit
EndFunc
 

alex33

Скриптер
Сообщения
1 457
Репутация
184
Внизу в трее рядом с часами отображается значёк скрипта. Нажми на него и появится такое меню:

В этом меню для выхода нажми "Exit",
а для того, чтобы поставить скрипт на паузу или снять с паузы нажми "Script Paused".
 
Автор
T

Tapok

Новичок
Сообщения
203
Репутация
0
Это все хорошо, но если скрипт использует передвижения мыши, то как быть? :smile:

joiner, спасибо, проверю :smile:
 

DyadyaGenya

Новичок
Сообщения
180
Репутация
0
Слегка модифицировал этот вариант. У меня на некоторых скриптах продолжали выполняться запущенные функции и результат типа двоил. Было заметно при выводе, напр, в консоль. И не только. Решил так:
Код:
Func _out()
Local $aData = _WinAPI_EnumChildProcess(_WinAPI_GetParentProcess())
ProcessClose($aData[1][1])
EndFunc
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 547
Репутация
2 429
Это ничего не решает, $aData[1][1] будет возвращать имя текущего процесса, уже тогда лучше брать $aData[1][0] (PID процесса), но тут не нужны WinAPI, достаточно просто использовать @AutoItPID.
И кстати для имени текущего процесса тоже не нужно использовать WinAPI, можно использовать это: StringRegExp(@AutoItExe, '\\([^\\]+)$', 3)[0]
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 547
Репутация
2 429
Можно сделать вот такой "хук" чтобы позволить прибивать собственный процесс по г. клавише:

Код:
_HotKeySetMyKiller('^q')

MsgBox(64, @ScriptName, 'Press <CTRL + Q> to kill me!')

Func _HotKeySetMyKiller($sHotkey = '{ESC}')
    Local $sKiller_File = @TempDir & '\~MyKiller.tmp'
   
    Local $sSrc = _
        '#NoTrayIcon' & @CRLF & _
        'HotKeySet("' & $sHotkey & '", "_Kill")' & @CRLF & _
        'While ProcessExists(' & @AutoItPID & ')' & @CRLF & _
        '    Sleep(10)' & @CRLF & _
        'WEnd' & @CRLF & _
        'FileDelete("' & $sKiller_File & '")' & @CRLF & _
        'Func _Kill()' & @CRLF & _
        '    ProcessClose(' & @AutoItPID & ')' & @CRLF & _
        'EndFunc'
   
    Local $hFile = FileOpen($sKiller_File, 2)
    FileWrite($hFile, $sSrc)
    FileClose($hFile)
   
    Run(@AutoItExe & ' /AutoIt3ExecuteScript "' & $sKiller_File & '"')
EndFunc
 
Верх