Тема: AHK: Как правильно проверить окно?
1. Можно писать:
IfWinActive, EditPlus - {
MsgBox Запущен текстовый редактор EditPlus
}или
If ( WinActive("EditPlus -") )
{
MsgBox Запущен текстовый редактор EditPlus
}[ Кстати, ну почему нельзя писать в одну строку как в JavaScript - ужасно раздражает! ]
И даже использую трюк:
if ( isEditPlus() ){
MsgBox Запущен текстовый редактор EditPlus
}
isEditPlus(){
Return WinActive("EditPlus -") ; EditPlus
}Я знаю, что это неправильно (так как не для этого предназначено), но ведь работает!!!!
[ Кстати, вместо false высылает 0x0... ]
2.
Не получается правильно задать RegExp'ы для начала и конца, то есть для заголовков: EditPlus - ****** и ********* - Word соответственно.
Применяю сейчас SetTitleMatchMode, но результат почему-то нестабильный (хотя может просто сбоит в другом месте):
SetTitleMatchMode, 1
IfWinActive, EditPlus -
SetTitleMatchMode, RegEx
IfWinActive, * - WordЯ понимаю, что для Word'а можно писать проще:
if WinActive("ahk_class OpusApp")Но хочу принципиально разобраться, как же правильно!
3.
Также в справке написано: "Какие фрагменты текста в окне требуют режима Slow (и есть ли такие), покажет Window Spy." Вы когда-нибудь с этим сталкивались? Как именно Window Spy должен об этом сообщит?
4.
И что интересно, оказалось, что ahk_class у KMPlayer'а (не буду не кому навязывать, но мне он очень нравится и полностью покрывает мои нужды) имеет тот же заголовок, что и у Winamp (ahk_class Winamp v1.x)! В результате, если они оба запущены возникают коллизии. Сейчас я пользуюсь скриптом из коллекции для Winamp. Нужно как-то переписать этот скрипт, но сам пока не могу, потому что постоянно путаюсь в ньюансах синтакса при обращении к окнам. Просто достало уже! Столько вариантов!! Кто-нибудь может вразумительно объяснить разницу?

