1

Тема: #ifWinActive не работает

Добрый день,

помогите пожалуйста разобаться почему не работает #ifWinActive.

записал скрипт, он таботает (заносит в окно слово при нажатии на F3), хотел автоматизировать с помощью IfWinaktive, но никак не получается, тоесть сктипт при запуске сразу же возвращает слово + enter и закрываеться, хотя окно нужное, в которое и нужно вносить слово не открыто.



вот запись работает при нажатии F3

#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
#SingleInstance Force
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1


F3::
BasicDemo:
WinActivate, Active Directory is not available ahk_class WindowsForms10.Window.8.app.0.2481e20_r58_ad15
Send, {LShift Down}
Send, {a}
Send, {b}
Send, {c}
Send, {LShift Up}
Send, {Enter}
Return


А вот мой код, который не работает.

#IfWinActivate, Active Directory is not available ahk_class WindowsForms10.Window.8.app.0.2481e20_r58_ad15
{
Send, {LShift Down}
Send, {a}
Send, {b}
Send, {c}
Send, {LShift Up}
Send, {Enter}
Return
}
#if

2

Re: #ifWinActive не работает

блин, кажеться не совсем понял принцип. Записной скрипт тоже всегда запускается (при нажатии на F3), не зависимо от того есть или нужное окно или нет.

3 (изменено: murxer, 2020-07-24 18:22:44)

Re: #ifWinActive не работает

так работает только с нужным окном, уже хорошо, теперь бы автоматизировать, чтобы скрипт сам, при появлении этого окна, заносил эти при буквы в строку и нажимал enter

F3::
If WinActive("Active Directory is not available")
{
Send, {LShift Down}
Send, abc
Send, {LShift Up}
Send, {Enter}
Return
}

4

Re: #ifWinActive не работает

murxer пишет:

чтобы скрипт сам, при появлении этого окна,

IfWinExist, Название окна
{
    WinActivate
    return
}
Это делает окно (название) активным

5

Re: #ifWinActive не работает

murxer, добавьте префикс скриптового языка в заголовок темы. Код должен быть оформлен тегом "code". Исправьте!

6 (изменено: fgslm, 2020-07-24 19:33:42)

Re: #ifWinActive не работает

murxer пишет:

IfWinExist, Название окна
{
    WinActivate
    return
}
loop
{
#IfWinActivate, Active Directory is not available ahk_class WindowsForms10.Window.8.app.0.2481e20_r58_ad15
Send, {LShift Down}
Send, {a}
Send, {b}
Send, {c}
Send, {LShift Up}
Send, {Enter}
Return
}

Так наверно. Но я не шарю

7 (изменено: murxer, 2020-07-24 22:22:43)

Re: #ifWinActive не работает

fgslm

спасибо, уже опознаёт окно, и ровно один раз срабатывает но потом вылетает, тоесть скрипт рушиться наверно и больше не срабатывает. Или loop не означает что при повторном появлении окна он должен сделать тоже самое?




IfWinExist, ("Active Directory is not available")
{
    WinActivate
    return
}
loop
	{
	If WinActive("Active Directory is not available")
		{
			Send, {LShift Down}
			Send, abc
			Send, {LShift Up}
			Send, {Enter}
			Return
		}
	}

8

Re: #ifWinActive не работает

murxer пишет:

и ровно один раз срабатывает но потом вылетает

Нужно вставить это в еще один цикл и присвоить ему бесконечность

9 (изменено: fgslm, 2020-07-24 22:38:27)

Re: #ifWinActive не работает

murxer пишет:

fgslm

спасибо, уже опознаёт окно, и ровно один раз срабатывает но потом вылетает, тоесть скрипт рушиться наверно и больше не срабатывает. Или loop не означает что при повторном появлении окна он должен сделать тоже самое?





loop
{
IfWinExist, ("Active Directory is not available")
{
    WinActivate
    return
}
loop
	{
	If WinActive("Active Directory is not available")
		{
			Send, {LShift Down}
			Send, abc
			Send, {LShift Up}
			Send, {Enter}
			Return
		}
	}
}

Но у вас может сложиться ситуация, что в это окно начнёт бесконечно спамить и бесконечно ставить его на передний план. Поэтому надо придумать паузу или выключение.

10

Re: #ifWinActive не работает


WinTitle = ahk_class Notepad ahk_exe notepad.exe
WinTitle = Active Directory is not available
Loop
{
	WinWaitActive, %WinTitle%
	Send, {LShift Down}abc{LShift Up}{Enter} 
	WinWaitNotActive 
}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

11

Re: #ifWinActive не работает

serzh82saratov пишет:

WinTitle = ahk_class Notepad ahk_exe notepad.exe
WinTitle = Active Directory is not available
Loop
{
	WinWaitActive, %WinTitle%
	Send, {LShift Down}abc{LShift Up}{Enter} 
	WinWaitNotActive 
}

Спасибо! работает теперь как нужно
целый день возился )))

12

Re: #ifWinActive не работает

serzh82saratov

WinTitle = ahk_class Notepad ahk_exe notepad.exe
WinTitle = Active Directory is not available

Немного не понял, два значения в переменной? Данные же переписаны во второй строке.


murxer

Бесконечный цикл, обратите внимание, наверно лучше добавить задержку между вводом.

Win10x64, AHK v1.1.30.03

13

Re: #ifWinActive не работает

__Михаил__ пишет:

Данные же переписаны во второй строке.

На всякий для тестов с блокнотом.

__Михаил__ пишет:

наверно лучше добавить задержку между вводом.

WinWait[Not]Active проверяет окно с задержкой, или у вас грузит проц?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

14

Re: #ifWinActive не работает

serzh82saratov

Были пару случаев, когда первая буква не успевала напечататься. Ну и язык ввода имеет значение - то на англ. то на рус.
Проц всё потянет, в нём я уверен. Вечные циклы это же зло, все знают).

Win10x64, AHK v1.1.30.03

15 (изменено: serzh82saratov, 2020-07-25 01:39:40)

Re: #ifWinActive не работает

__Михаил__ пишет:

Были пару случаев, когда первая буква не успевала напечататься.

Легко, но это уже другая тема, в таких случаях для гарантии можно ещё много чего написать, а тут про отслеживание окна.

__Михаил__ пишет:

Вечные циклы это же зло, все знают).

Никогда не слышал такого. Можно вместо цикла установить уведомления, но в данном контексте это ни к чему. Тут нет другого функционала, и прерывания потока тут ни к чему.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru
Win10x64 v2004, AutoHotkey_L v1.1.33.02 (Unicode 32-bit). AhkSpy, Hotkey, ClockGui

16 (изменено: fgslm, 2020-07-25 03:30:07)

Re: #ifWinActive не работает

__Михаил__ пишет:

Вечные циклы это же зло, все знают).

Было у меня такое. Какая-то проблема в обращении к большому массиву при проверке условий.