1

Тема: Проблема с командой IfWinExist/IfWinNotExist

Я скопировал пример с калькулятором из перевода - работает.
Скопировал пример с блокнотом - не работает.
Попробовал записать вот так:

#Persistent
IfWinNotExist, 1.ahk
    return
else
{
    WinActivate ; Использует последнее найденное окно, установленное IfWinNotExist выше.
    WinMove, 40, 40 ; Передвигает его в другое место.
    return
}

В 1.ahk записал просто чтобы запускалось:

#Persistent

Открыл 1.ahk в блокноте, окно поставил в противоположный угол и запустил скрипт чтобы оно переместилось - не видит окна, не переносит. Не печатает в окнах если написать что-то напечатать.

Вообще хотел эту команду использовать так чтобы она проверяла окно и если оно есть то

Joy1::f:=0

А если нет, то наоборот включить.
Очень долго не мог понять в чём дело и почему не срабатывает, пока не убедился что причина в самом AutoHotKey

Что делать?

2

Re: Проблема с командой IfWinExist/IfWinNotExist

SetTitleMatchMode?

3

Re: Проблема с командой IfWinExist/IfWinNotExist

YMP пишет:

SetTitleMatchMode?

И куда это там вставить? После IfWinNotExist?

4

Re: Проблема с командой IfWinExist/IfWinNotExist

http://www.script-coding.com/AutoHotkeyTranslation.html

Win 7 x64
AHK v1.1.24.00
                       Справка тебе в помощь.

5

Re: Проблема с командой IfWinExist/IfWinNotExist

Ну написал я так:

#Persistent
SetTitleMatchMode, 1

IfWinExist, 1-Блокнот
{
    WinActivate ; Использует окно, найденное выше.
    WinMove, 40, 40
    return
}

Результат тот же - не видит окна, не перемещает.

6

Re: Проблема с командой IfWinExist/IfWinNotExist

loop
if WinActive("1 — Блокнот")
    WinMove, 40, 40

Вот так подходит?

7 (изменено: kamenschik, 2015-05-07 12:21:04)

Re: Проблема с командой IfWinExist/IfWinNotExist

yalanne пишет:

Вот так подходит?


Извиняюсь. Переместилось!
Просто активировать нужно.

Ладно, спасибо, пошёл дальше экспериментировать.

8 (изменено: yalanne, 2015-05-07 13:22:12)

Re: Проблема с командой IfWinExist/IfWinNotExist

Ну вот для активации.

if WinExist("1 — Блокнот")
    WinActivate
else
    MsgBox Окно Не найдено.

Если такого окна нет, скрипт об этом скажет. А если есть то активирует.




kamenschik пишет:
#Persistent
SetTitleMatchMode, 1

IfWinExist, 1-Блокнот
{
    WinActivate ; Использует окно, найденное выше.
    WinMove, 40, 40
    return
}

Результат тот же - не видит окна, не перемещает.

Этот вариант тоже рабочий просто указан неправильный Title шаблон 1-Блокнот.
Надо так 1 Блокнот ([Имя][Пробел][спец символ(это не тире)][Пробел]Блокнот)

9 (изменено: kamenschik, 2015-05-07 15:39:37)

Re: Проблема с командой IfWinExist/IfWinNotExist

yalanne пишет:

спец символ(это не тире)

А где мне взять этот символ? Какой у него юникод?
Странно что закрываются скрипты без проблем если написать:

1-Блокнот

10 (изменено: kamenschik, 2015-05-07 15:59:26)

Re: Проблема с командой IfWinExist/IfWinNotExist

yalanne пишет:

спец символ(это не тире)

Cкопировал и отловил:

E7 2014    U    d    0.00    —  

Но печатает в блокноте "e" вместо "—".
Придётся просто скопировать и на кнопку повесить, не через юникод. А жалко.

11

Re: Проблема с командой IfWinExist/IfWinNotExist

Символ "—" через spy у названия блокнота взял.

12 (изменено: kamenschik, 2015-05-07 18:34:12)

Re: Проблема с командой IfWinExist/IfWinNotExist

Всё равно не получается всё что хотел, потому что есть ещё одна проблема. В случае когда переназначается клавиша такой подход не прокатывает. Клавише пофиг открыто окно или закрыто, она всёравно печатает "2":

if WinActive("1 — Блокнот")
{
Joy2::Send, {2}
}
else
return

В итоге я не могу задать - если окно активно печатай то-то.
Окна нет, а она печатает в тексте "2".

13 (изменено: yalanne, 2015-05-07 18:39:31)

Re: Проблема с командой IfWinExist/IfWinNotExist

#if WinActive("1 — Блокнот")
Joy2::Send, {2}
#if

В этом случаи если условие истина сменится действие кнопки.А если ложь то кнопка стандарт.

14

Re: Проблема с командой IfWinExist/IfWinNotExist

yalanne пишет:

В этом случаи если условие истина сменится действие кнопки.А если ложь то кнопка стандарт.

Работает, только мне непонятно почему не работает мой вариант. Все правила соблюдены вроде.
Как-то всё сложно.
Каждый раз думать придётся а сработает ли правило в этом конкретном случае....

15 (изменено: yalanne, 2015-05-07 19:38:03)

Re: Проблема с командой IfWinExist/IfWinNotExist

#if С префиксом решетки подходит, если надо переназначить клавишу в определенной ситуации. Такое условие будет всегда проверятся при нажатии этой кнопки если даже до условия есть return. Пример:

return ; После старта скрипта завершаем поток, При этом сам скрипт не выключится.
#if 1 ; Условие Истина, так как нечего сравнивать.
Lwin::tooltip 1 ; По нажатию кнопки левого виндвос(флажок) покажется подсказка 1
#if ; Конец условия

Если просто указать вывод подсказки без кнопок:

#if 1
tooltip 1
#if

То это не сработает, так как нету вызываемой клавиши.

В случаи с простым if в данном виде как у вас он только сработает 1 раз при запуске скрипта и то  команда

Joy2::Send, {2}

не переназначит кнопку.(по идее должно было выбить ошибку)

Вот вики на простой if и с решеткой #if