Что нового

Не срабатывает Exit при использовании HotKeySet

Пост номер 7 был отмечен как лучший ответ.

mathe

Новичок
Сообщения
5
Репутация
0
Здравствуйте! Я не очень силен в Autoit, поэтому сильно не бейте. Помогите, пожалуйста, разобраться. Вот я пишу код:
Код:
Run("notepad")
WinWaitActive("Безымянный — Блокнот")
MsgBox(0, "Контроль", "Блокнот запущен")
WinWaitClose("Безымянный — Блокнот")
MsgBox(0, "Контроль", "Перехожу к выходу")
Exit

в файле Ogidanie.au3, превращаю его в файл Ogidanie.ехе, запускаю файл Ogidanie.ехе, тогда после закрытия первого диалогового окна, блокнота и второго диалогового окна в диспетчере задач на вкладке Процессы процесс Ogidanie.ехе исчезает, все нормально. Когда же я получаю Ogidanie1.ехе из кода
Код:
Run("notepad")
WinWaitActive("Безымянный — Блокнот")
MsgBox(0, "Контроль", "Блокнот запущен")

HotKeySet("{NUMPAD0}", "_MyFunc")

While 1
Sleep(100)
WEnd

Func _MyFunc()
MsgBox(64, "Title", "pressed, goodby!")
EndFunc

WinWaitClose("Безымянный — Блокнот")
MsgBox(0, "Контроль", "Перехожу к выходу")
Exit

, то после закрытия последнего диалогового окна в процессах Ogidanie1.ехе никуда не исчезает. Наконец, после закрытия всего, что открывает файл Ogidanie2.ехе, полученный из кода
Код:
Run("notepad")
WinWaitActive("Безымянный — Блокнот")
MsgBox(0, "Контроль", "Блокнот запущен")

Send("Пишу не я.")

WinWaitClose("Безымянный — Блокнот")
MsgBox(0, "Контроль", "Перехожу к выходу")
Exit

в процессах этот процесс исчезает. Скажите, пожалуйста, как сделать так, чтобы и во втором случае процесс исчезал? Очевидно, это связано с командой
Код:
HotKeySet(


У меня 32-разрядная Windows7.
 

sngr

AutoIT Гуру
Сообщения
965
Репутация
384
После выполнения функции вызваной кнопкой скрипт переходит к месту откуда функция вызывалась, код ниже не выполнится никогда. Используй примеры из справки, подпиливая их под свои нужды и всё получится.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 381
Репутация
2 381
Код:
Run("notepad")
WinWaitActive("Безымянный — Блокнот")
MsgBox(0, "Контроль", "Блокнот запущен")

HotKeySet("{NUMPAD0}", "_MyFunc")

While 1
    Sleep(100)
WEnd

Func _MyFunc()
    MsgBox(64, "Title", "pressed, goodby!")
    
    WinWaitClose("Безымянный — Блокнот")
    MsgBox(0, "Контроль", "Перехожу к выходу")
    Exit
EndFunc
 
Автор
M

mathe

Новичок
Сообщения
5
Репутация
0
После выполнения функции вызваной кнопкой скрипт переходит к месту откуда функция вызывалась, код ниже не выполнится никогда.
Не сходится: Ogidanie1.ехе никуда не девается и без выполнения этой функции.
Сообщение автоматически объединено:

Код:
Run("notepad")
WinWaitActive("Безымянный — Блокнот")
MsgBox(0, "Контроль", "Блокнот запущен")

HotKeySet("{NUMPAD0}", "_MyFunc")

While 1
    Sleep(100)
WEnd

Func _MyFunc()
    MsgBox(64, "Title", "pressed, goodby!")
   
    WinWaitClose("Безымянный — Блокнот")
    MsgBox(0, "Контроль", "Перехожу к выходу")
    Exit
EndFunc
Это .ехе должно закрываться после закрытия блокнота только после нажатия 0, а надо, чтобы просто после закрытия всех окон блокнота. Но у меня почему-то не закрывается и после закрытия всех окон блокнота и нажатия 0.
 
Последнее редактирование:

joiner

Модератор
Локальный модератор
Сообщения
3 191
Репутация
540
что то я сам запутался в условиях
вот код, можно открыть сколь угодно окон блокнота . потом закрыть все и код закроется
Код:
Run("notepad")
WinWaitActive("[CLASS:Notepad]")
Send('раз')
Run("notepad")
WinWaitActive("[CLASS:Notepad]")
Send('два')
Run("notepad")
WinWaitActive("[CLASS:Notepad]")
Send('три')

While 1
    Sleep(100)
    If WinWaitClose("[CLASS:Notepad]") Then Exit
WEnd
 
Автор
M

mathe

Новичок
Сообщения
5
Репутация
0
[U]joiner,[/U] код хороший, но, например, код

Код:
Run("notepad")
WinWaitActive("[CLASS:Notepad]")

HotKeySet("!ц", "_MyFunc")
HotKeySet("!у", "_MyFunc1")
HotKeySet("!к", "_MyFunc2")

While 1
Sleep(100)
WEnd

Func _MyFunc()
Send("успеем")
EndFunc

Func _MyFunc1()
Send("дверь")
EndFunc

Func _MyFunc2()
Send("{LEFT}")

While 1
Sleep(100)
If WinWaitClose("[CLASS:Notepad]") Then Exit
WEnd


не закрывается.
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8 381
Репутация
2 381
Код нерабочий.
После первого цикла ничего выполнено не будет (кроме вызываемых функции).

Вы хоть в справку по функциям заглядываете?
WinWaitClose ожидает закрытия окна (одного), возможно вам нужно WinExists.

Код:
Run("notepad")
WinWaitActive("[CLASS:Notepad]")

HotKeySet("!ц", "_MyFunc")
HotKeySet("!у", "_MyFunc1")
HotKeySet("!к", "_MyFunc2")

While 1
    Sleep(100)
    If Not WinExists("[CLASS:Notepad]") Then Exit
WEnd

Func _MyFunc()
    Send("успеем")
EndFunc

Func _MyFunc1()
    Send("дверь")
EndFunc

Func _MyFunc2()
    Send("{LEFT}")
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3 191
Репутация
540
ожидание закрытия окна работает до последнего закрытия окна класса блокнот. то есть, все можно без цикла
другой вопрос- во что выльется код? если только работа с блокнотом, то можно и так.
Код:
Run('notepad')
WinWaitActive('[CLASS:Notepad]')
HotKeySet('!1', '_MyFunc')
HotKeySet('!2', '_MyFunc1')
HotKeySet('!3', '_MyFunc2')
HotKeySet('!4', '_NewText')

WinWaitClose('[CLASS:Notepad]')

Func _MyFunc()
    Send('один')
EndFunc   ;==>_MyFunc

Func _MyFunc1()
    Send('два')
EndFunc   ;==>_MyFunc1

Func _MyFunc2()
    Send('три')
EndFunc   ;==>_MyFunc2

Func _NewText()
    Run('notepad')
    WinWaitActive('[CLASS:Notepad]')
    Send('новый текст')
EndFunc   ;==>_NewText
 
Автор
M

mathe

Новичок
Сообщения
5
Репутация
0
[U]CreatoR,[/U] [U]joiner,[/U] отлично! То, что надо! Только вы, [U]joiner,[/U] использовали в качестве модификатора Alt, а на него завязаны меню большинства программ. Не знаю почему, но у меня ваш код срабатывает только с цифрами дополнительной клавы, но при этом нет первых букв слов, так что лучший ответ все-таки не у вас. Но все равно спасибо всем помогавшим.
 

joiner

Модератор
Локальный модератор
Сообщения
3 191
Репутация
540
автор, горячие клавиш это условность, которая меняется под задачу))
я лишь указал на вариант решения проблемы с выходом. если вы разницы не увидели, то нужно штудировать справку и примеры на форуме
 
Автор
M

mathe

Новичок
Сообщения
5
Репутация
0
Последнее редактирование модератором:
Верх