1

Тема: AHK: отправка текста

Следующий код работает корректно при активном окне:

#1::SendPlay hello{Enter}

Но почему то следующий код не работает. Текст набирается но не отправляется. Не работает клавишка ентер:

ControlFocus, PokerStarsChatEditorClass1, ahk_id %ID%
SendPlay hello{Enter}

Пробовал и Send и SendInput, текст вводится но ентер не нажимается, в чем может быть проблема?

2

Re: AHK: отправка текста

SendPlay hello{Enter}

Проверил в "Блокноте". Код работает.

3

Re: AHK: отправка текста

В том то и дело в блокноте работает, но не в моем приложении. В чем может быть проблема и как е решать? Не нажимается Enter пробовал и Send и SendInput, пробовал делать {Enter 100}
Текст отправляется только в одном случае из десяти, как можно решить проблему?

4

Re: AHK: отправка текста

Наверное это особенность приложения, и таким способом нажатие Enter не передать. Попробуйте другие пути.

5

Re: AHK: отправка текста

Подскажите в какую сторону идти ? Какие способы еще есть? Я не очень разбираюсь в AHK.

6

Re: AHK: отправка текста

SendPlay, {Raw}hello
Sleep, 50
SendPlay, {Enter}
SendRaw, hello
Sleep, 50
SendPlay, {Enter}

7

Re: AHK: отправка текста

Я делал задержки, не помогает. Возможно как-то через длл отследить функцию отправки и сделать через длл? Какие способы еще есть?

8

Re: AHK: отправка текста

ControlSend, PokerStarsChatEditorClass1, hello, ahk_id %ID%
Sleep, 50
ControlSend, PokerStarsChatEditorClass1, {Enter}, ahk_id %ID%

9

Re: AHK: отправка текста

Последний вариант тоже не помог

10 (изменено: Grey, 2011-09-17 23:42:47)

Re: AHK: отправка текста

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

ControlSend, Edit1, hello, ahk_class Notepad
ControlSend, Edit1, {Enter}, ahk_class Notepad

11 (изменено: propostaff, 2011-09-17 23:42:45)

Re: AHK: отправка текста

Да текст вводится, но не отправляется,
а если потом вручную нажимаю клавишу ентер - отправляется.

12

Re: AHK: отправка текста

А клавиша как определяется через Window Spy?

13

Re: AHK: отправка текста

В том то и дело, что все это работает по идее, скрипты простые, но в приложении моем не работает отправка ентером, а если вручную нажимаю - работает.

14

Re: AHK: отправка текста

Там нету никакой клавиши. Просто поле для ввода и отправка текста только клавишей ентер.

15

Re: AHK: отправка текста

Я бы все понял, но почему-то вот это-же работает

#1::SendPlay hello{Enter}

16

Re: AHK: отправка текста

Клавиша энтер определяется хоть как-то?, по идее она тоже контрол.

17

Re: AHK: отправка текста

Я имею ввиду в приложении клавишу.

18

Re: AHK: отправка текста

Если возможно -напишите пожалуйста Вашу icq. Клавиша ентер никак не определяется.

19

Re: AHK: отправка текста

Или возможно я не понимаю как ее определять )

20

Re: AHK: отправка текста

Тогда как Вы определили название контрола PokerStarsChatEditorClass1?

21

Re: AHK: отправка текста

С помощью widow spy
там нету никакой кнопки отправки. Там просто поле для ввода текста и чат. Отправляется текст тольк ос помощью клавиши ентер на клавиатуре

22

Re: AHK: отправка текста

Пока ещё мне не попадались такие приложения , м.б. стоит попробовать заменить слово Enter на клавиатурный код sc1C или sc11C, хотя, успех сомнителен.

23 (изменено: creature.ws, 2011-09-18 04:39:07)

Re: AHK: отправка текста

Чтобы определить «куда же посылать энтер» можно воспользоваться ControlGetFocus
Например так:


#Lbutton:: ; зажав win кликнуть в поле ввода
  MouseGetPos,,, id, Control1
  WinActivate, ahk_id %id%
  MouseClick
  ControlGetFocus, Control2, ahk_id %id%
  ToolTip %Control1% `n%Control2%
  sleep 1000
  ToolTip
  Clipboard := Control2
Return

Работающий код будет примерно такой:


ControlSend, PokerStarsChatEditorClass1, hello, ahk_id %ID%
ControlSend, «имя control'а определённого ControlGetFocus» , {Enter}, ahk_id %ID%

24

Re: AHK: отправка текста

Grey пишет:

...как Вы определили название контрола PokerStarsChatEditorClass1?

propostaff пишет:

С помощью widow spy

Window Spy показывает класс окна, а не его хэндл.

2propostaff Откуда взято это?

ahk_id %ID%

25

Re: AHK: отправка текста

Нашел решение. Сделал отправку ентера несколько раз пока не отправиться. Иногда сообщения отправляется с первого раза, но очень часто с четвертого нажатия ентер или больше. Почему не знаю. Вот скрипт. Если есть что оптимизировать - буду рад помощи. Спасибо за Ваши ответы

#NoTrayIcon
#Persistent
FileDelete, %A_Temp%\st.txt
text := "New window open"
SetKeyDelay, 100, 100
sendscript:
Sleep, 1000
WinGet, idlist, list, ahk_class PokerStarsTableFrameClass
loop, %idlist%
{
ID := idlist%A_Index%
FileRead, fileread, %A_Temp%\st.txt
IfNotInString, fileread,  %ID%
    {
    ControlSetText, , %text%, ahk_id %ID%
    Enter:
    ControlSend, PokerStarsChatEditorClass1, {Enter}, ahk_id %ID%
    ControlGetText, enter,  PokerStarsChatEditorClass1, ahk_id %ID%
    if (enter = "")
    GoTo, next 
    else
    GoTo, enter
    next:
    FileAppend, %ID%`n, %A_Temp%\st.txt
    }
}
GoSub, sendscript

+!::ExitApp

26

Re: AHK: отправка текста

propostaff,
если есть кнопка в программе отправить, то может на него и надо нажимать мышкой? да не Труъ-метод, но всё же.

MouseClick, left,  450,  440

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

27

Re: AHK: отправка текста

там нет возможности отправлять сообщения кнопкой. Только ентер на клавиатуре