Тема: AHK: для конкретного свёрнутого окна
Добрый день, есть скрипт, который должен посылать команды в опред. окно, которое должно быть свернутым. Помогите реализовать.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Добрый день, есть скрипт, который должен посылать команды в опред. окно, которое должно быть свернутым. Помогите реализовать.
...есть скрипт...
Где он?
, вот к примеру вариант в котором я посылал нажатие клавиши и жал на контрол.
Скрипт простой, не считаю нужным его сюда писать, т.к всего лишь посылает в чат одно слово бесконечное число раз с некоторым интервалом.
Правильно понимаю, что нужно лишь вставить след. строку:
WinMinimize, win1, где win1 - название окна?
Нужно определить название контрола (если он стандартный), потом можно попробовать послать в него текст используя название класса окна, или части названия и т.п. Вместе с АХК идёт маленькая программа (...\AutoHotkey\AU3_Spy.exe (про неё тут на форуме много говорили, воспользуйтесь поиском)), с помощью её получаете необходимые данные.
Наводим мышкой на окно чата, жмём F12 - если контол стандартный, то в чат пойдет "Строка..."{Enter}
F12::
MouseGetPos,,, id, ctrl
; WinMinimize, ahk_id %id% ; раскомментирровать для сворачивания окна
loop {
ControlSend, %ctrl%, Строка...`n, ahk_id %id%
sleep 5000
}
#F4:: pause ; Win+F4 - старт/стопХорошо, коли я нуб - объясню понятнее. Игра SA:MP. Открыть чат - F6, нужно отправить туда /find 1 с интервалом 135 секунд бесконечное число раз в свернутом окне.
Помогите пожалуйста, никак не могу сделать. ![]()
В свёрнутое окно отправляет ControlSend, интервал задаётся Sleep либо Settimer.
Итого 2 комманды.
Пример с блокнотом (подобных примеров в темах форума множество)
#Persistent
Settimer, SendString, 1000 ; 1000 это раз в секунду
return
SendString:
ControlSend,, некая строка{Enter}, ahk_class Notepad
returnЕсли кликнуть по имени команды в коде выше — откроется соответствующий раздел справки.
Спасибо, разобрался.
В принципе тема схожа с тем, что меня интересует, потому чтобы не дублировать одно и тоже спрошу здесь.
Собственно мне нужно в неактивный блокнот отправить сообщение, но методом из сообщения №9 -не выходит. Мне нужно отправить сообщение не в блокнот а в первое поле(Edit 1) в окне "заменить" и потом во второе уже другой текст. Пытался класс окна "заменить" использовать -не помогало.
F2::
;WinActivate, ahk_class Notepad ;worldpad окно
WinWait, ahk_class Notepad ;ждём окно
WinMenuSelectItem, ahk_class Notepad, , 2&,10& ; Заменить
If ErrorLevel
{
MsgBox, Нет
}
else
{
ControlClick, Edit 1 ;Клик для поле для замены "что заменить"
ControlSend, Edit 1, некая строка ;-этот вариант не работает !!!
;MsgBox, да
}
<...> Пытался класс окна "заменить" использовать -не помогало. <...>
Плохо пытался. Зачем в Edit1 пробел?
F2::
;WinActivate, ahk_class Notepad ;worldpad окно
WinWait, ahk_class Notepad ;ждём окно
WinMenuSelectItem, ahk_class Notepad, , 2&,10& ; Заменить
sleep 10
If ErrorLevel
MsgBox, Нет
else
ControlSend, Edit1, некая строка, ahk_class #32770
; или
; ControlSend, Edit1, некая строка, Заменить
ReturnЯ это вижу как-то так:
; Заменяем А на В
1::
Process, Exist, notepad.exe
Pid := ErrorLevel
WinMenuSelectItem, ahk_pid %Pid%, , 2&,10& ; Заменить
WinWait, ahk_class #32770 ahk_pid %Pid%
ControlSetText, Edit1, a, ahk_class #32770 ahk_pid %Pid%
ControlSetText, Edit2, b, ahk_class #32770 ahk_pid %Pid%
Control, Check, , Button5, ahk_class #32770 ahk_pid %Pid%
WinClose, ahk_class #32770 ahk_pid %Pid%
Return
Понял, спасибо.
Плохо пытался. Зачем в Edit1 пробел?
Дык ControlClick сьел пробел, да и WinSpy -показал там пробел.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться