1 (изменено: lost, 2021-03-08 18:50:18)

Тема: ControlSend/ControlGet не работают

Вечер добрый! С утра пытаюсь понять что не так. У меня почему то не работают команды ControlSend/ControlGet.
Вообще, хотел переписать старый скрипт чтоб работал с неактивным окном. Проблемы начались сразу. Решил проверить команды выше на блокноте и опять мимо. Что не так?
Вот код где пытался понять в чем дело.


>^t::
	c := ControlSend , , "test", ahk_id %hwnd2%
	
	;MsgBox, %c%
	;Sleep 3000
	ToolTip %hwnd2%
	return
	
	
>^m::
	MouseGetPos , , , hwnd2
	;ToolTip %hwnd2%
	return
	
	
>^f:: 
e := ControlGet, OutputVar, Hwnd,, Edit1,  Безымянный - Блокнот
MsgBox %e%
ControlSend, , Test-text-HWND `n, ahk_id %OutputVar%
Return

по бинду LeftCtrl + f код скопированный с этого форума(добавил MsgBox). Тоже не работает.
LeftCtrl + m. Hwnd через MouseGetPos определяется, правда в hex формате, не знаю важно ли это.
Пытался проверить что возвращают ControlGet и ControlSend. MsgBox выводится пустой.
Проверял имя окна и ClassNN. Полностью совпадают.
Запускал от имени администратора. Также молчит
Поставил Unicode 64 версию (стояла ansi 32). Нет реакции.
Пробовал запустить на ноуте. Также
Я уже почти сдался. Помогите:(

2

Re: ControlSend/ControlGet не работают

Что должен вернуть этот код по-вашему?

c := ControlSend , , "test", ahk_id %hwnd2%
MsgBox,  % c

3

Re: ControlSend/ControlGet не работают

__Михаил__
Да. Перепутал немного. Проверил ErrorLevel.  ControlSend - 0, а вот после ControlGet - 1:(

4

Re: ControlSend/ControlGet не работают

Поэкспериментировал с кодом.
Связка


>^t::
	ControlSend , , test, ahk_id %hwnd2%
	return
	
	
>^m::
	MouseGetPos , , , hwnd2
	return
	

- работает. Убрал "с:=" в первой строчке.
------------------
А вот пример с форума никак не хотел работать пока не добавил строчки


SetTitleMatchMode, 2
SetKeyDelay 30, 30

и не убрал "Безымянный -" с тайтла.
Без задержки отправки, клавиши отправляются немного не в том порядке

5

Re: ControlSend/ControlGet не работают

ControlSend - очень капризная. Я лично её не использую, легче активировать окно, и обычным Send напечатать нужное.

6

Re: ControlSend/ControlGet не работают

__Михаил__
Видимо и мне так придется. В игре в текстовом поле при неактивном окне все работает. А вот как клавиши управления не распознается, даже при активном окне.

7

Re: ControlSend/ControlGet не работают

Какая задача от скрипта? Напечатать в текстовом поле в игре? Если не хочет печатать напрямую, можно попробовать делать вставку из буфера.
Делается так: копируем нужные текст в переменную буфера, затем в игре отправляем посыл клавиш Ctrl+C.

F1::
Text := "Данный текст нужно вставить в игру`nКак есть."

ClipBoard := Text	; Заменить буфер.
Sleep, 200
Send ^{vk56}   ; Вставить (Ctrl+C).
Return