Что нового

Как послать текст в неактивное окно (блокнот)?

Статус
Закрыто для дальнейших ответов.

Tapok

Новичок
Сообщения
204
Репутация
0
Как послать текст в неактивное окно (блокнот)? Окно не свернуто.
Код:
ControlSetText ($hwnd, "", "[CLASS:Edit; INSTANCE:1]", $text)

по-моему, делает Блокнот активным.
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
Код:
ControlSend

ControlSend работает аналогично Send, но в отличии от последней может отправлять клавиши непосредственно окну/элементу, а не только активному окну.
OffTopic:
жаль не ссылки на статью "Как научиться читать справку чтобы не задавать вопросов с очевидными ответами"
 

gloss

Ленивое кодило
Сообщения
155
Репутация
5
joiner [?]
жаль не ссылки на статью "Как научиться читать справку чтобы не задавать вопросов с очевидными ответами"
Не всегда получается найти что то в справке с первого раза, тем более если не знаешь что искать :-X
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
gloss
чтение справки по языку это самое первое, чему нужно научиться. в справке даются ссылки на схожие функции. сам такой был. вот поэтому и советую читать справку. а автору темы уже не раз советовали это делать. дело здесь не в нежелании помочь, но в желании научить элементарному. я так же начинал. вопрос может зависнуть (быть без ответа). что тогда делать?
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
joiner, про controlsend я знаю...но это эмуляция нажатия клавиш...и медленная, хочется быстрее
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Tapok
по-моему, делает Блокнот активным
Если не уверены - проверьте. Я вот у себя проверил на Win7 - блокнот не активируется (да и не может он активироваться этой функцией).
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
InnI, да, вероятнее всего какой то другой кусок кода делает главное окно неактивным...проверю, у меня тоже Блокнот в чистом виде неактивен...
Код:
$text = '1234567890'
$hwnd = WinGetHandle("Безымянный — Блокнот")
ControlSetText ($hwnd, "", "[CLASS:Edit; ID:15]", $text)
;~ ControlSend ($hwnd, "", "[CLASS:Edit; ID:15]", $text)

If WinActive("Безымянный — Блокнот") Then
    MsgBox(0,"","Окно блокнота активно")
ElseIf WinActive("autoit") Then
    MsgBox(0,"","Окно autoit активно")
EndIf


по поводу медленности, я не прав, что-то типа такого
Код:
AutoItSetOption ("SendKeyDelay", 0)
Opt("SendKeyDownDelay", 0)

делает все быстрым (но не мгновенным, как ControlSetText) :smile:

Может есть способ запретить окну терять фокус?

Активируется ли окно при перемещении (WinMove)?

P.S. InnI, спасибо за ответы без нравоучений :smile:
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Tapok
способ запретить окну терять фокус
Код:
While Sleep(100)
  $hWnd = WinGetHandle("[class:Notepad]")
  If WinExists($hWnd) And Not BitAND(WinGetState($hWnd), 8) Then WinActivate($hWnd)
WEnd


Активируется ли окно при перемещении (WinMove)?
Неужели так сложно написать одну строчку и проверить?
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
Неужели так сложно написать одну строчку и проверить?
согласен :-[

Действительно, фокус терялся не из-за функций ControlSetText и ControlSend.
Спасибо!
 
Автор
T

Tapok

Новичок
Сообщения
204
Репутация
0
Понравился пример из справки, если действительно, можно посылать сообщения окну (Send) без потери фокуса источником сообщения-это хорошо.
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Тема закрыта.


Добавлено:
Сообщение автоматически объединено:

Tapok, неделя отпуска для изучения справки по AutoIt.
 
Статус
Закрыто для дальнейших ответов.
Верх