Что нового

[Окна, Диалоги] ControlSend не работает с некоторым окнами. Почему?

WasonAl

Новичок
Сообщения
31
Репутация
1
Столкнулся с тем, что ControlSend некорректно работает с некоторыми окнами - особенно маленькими модальными типа ввода логина-пароля.
Причём возвращает успех, однако текст фактически не забивается в окно.
Когда пробую обычным Send-ом всё проходит нормально. Однако обычный Send не так надёжен - бывает его ввод перехватывает какое-либо вновь открытое окно.
Кто-нибудь знает причины и как с этим бороться?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
WasonAl
ИМХО, надежнее использовать ControlSetText() с последующей проверкой через ControlGetText().
 
Автор
W

WasonAl

Новичок
Сообщения
31
Репутация
1
madmasles сказал(а):
WasonAl
ИМХО, надежнее использовать ControlSetText() с последующей проверкой через ControlGetText().

Попробовал. Получилось очень прикольно: текст, который по моему замыслу должен был попасть в поле ввода окна попал в его ЗАГОЛОВОК :laugh:
Круто конечно, но несколько не то, что надо.
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
WasonAl [?]
текст, который по моему замыслу должен был попасть в поле ввода окна попал в его ЗАГОЛОВОК
Я не знаю, как Вы используете ControlSetText(), но, судя по результату, неправильно.
 
Автор
W

WasonAl

Новичок
Сообщения
31
Репутация
1
madmasles сказал(а):
Я не знаю, как Вы используете ControlSetText(), но, судя по результату, неправильно.
Так я тоже так думаю! Собственно потому я и здесь :-\
Я использую вот так:
[box title=TitleBox]
ControlSetText($Handle,"",,$Text) - текст попадает в заголовок
И вот варианты в которых текст НИКУДА не попадает:
ControlSetText($Handle,"","Static3",$Text)
ControlSetText($Handle,"","[CLASS:Static; INSTANCE:3]",$Text)
ControlSend ($Handle,"","Static3",$Text)
ControlSend ($Handle,"","[CLASS:Static; INSTANCE:3]",$Text)
[/box]

Вот на всякий случай выдача программы AutoIt Window Info:
Код:
>>>> Window <<<<
Title:	Идентификация пользователя
Class:	#32770
Position:	827, 487
Size:	266, 225
Style:	0x94C000C4
ExStyle:	0x00010101
Handle:	0x00000000000C1272

>>>> Control <<<<
Class:	Static
Instance:	3
ClassnameNN:	Static3
Name:	
Advanced (Class):	[CLASS:Static; INSTANCE:3]
ID:	65535
Text:	
Position:	5, 33
Size:	252, 57
ControlClick Coords:	55, 43
Style:	0x50000012
ExStyle:	0x00000004
Handle:	0x0000000000261260

>>>> Mouse <<<<
Position:	890, 588
Cursor ID:	5
Color:	0xFFFFFF

>>>> StatusBar <<<<

>>>> ToolsBar <<<<

>>>> Visible Text <<<<
&Ввод
&Отмена
&Справка
Основное МСК 2 (RU) [217.174.184.6:15200]
Введите Ваше Имя
Введите Ваш Пароль


>>>> Hidden Text <<<<
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
WasonAl
Странно, что у Вас поле ввода CLASS:Static. По идее, оно должно быть Edit.
А что это за программа?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
А скриншот можно?
 
Автор
W

WasonAl

Новичок
Сообщения
31
Репутация
1
Попробовал:
WinWaitActive ($Handle)
ControlSend ($Handle,"","Edit1","Мой Text{Enter}")

Ура! Прочитала! Спасибо! Как Вы догадались?
 
Автор
W

WasonAl

Новичок
Сообщения
31
Репутация
1
Yashied сказал(а):
А скриншот можно?

Можно, конечно. Как я понял дискуссия приобретает уже научный интерес - поскольку вопрос я неожиданным образом решил. Раньше думал, что AutoIt Window Info даёт полную информацию об окне. А оказывается наименования Edit она не дала.
Чего именно желаете скриншот?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
WasonAl [?]
Раньше думал, что AutoIt Window Info даёт полную информацию об окне
Для того, чтобы получить сведения о конкретном элементе окна, то на него и надо навести "прицел" AutoIt v3 Window Info.

И помещайте, пожалуйста, код в соответствующие теги.
 
Автор
W

WasonAl

Новичок
Сообщения
31
Репутация
1
madmasles сказал(а):
WasonAlДля того, чтобы получить сведения о конкретном элементе окна, то на него и надо навести "прицел" AutoIt v3 Window Info.

И помещайте, пожалуйста, код в соответствующие теги.

Да ведь я именно так и делал!
Даже проверил сейчас - всё правильно, он нигде слова Edit не пишет.
Хотите скрин выложу?

Про теги - я на форумах крайне редко пишу тегами пользоваться не умею. Я вроде бы поместил в третьем сообщении - так на будущее устроит?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Я как раз скоро закончу писать Control Viewer - полноценная замена AutoIt Window Info. Там все будет намного проще и нагляднее...

:smile:
 

Yashied

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

VladUs

Скриптер
Сообщения
621
Репутация
181
Yashied
Yashied сказал(а):
Я как раз скоро закончу писать Control Viewer - полноценная замена AutoIt Window Info. Там все будет намного проще и нагляднее...
О .. Ждем с нетерпением :smile:
 
Автор
W

WasonAl

Новичок
Сообщения
31
Репутация
1
Yashied сказал(а):
У тебя выделен не Edit, а GroupBox. А Edit скрывается под ним.

Я когда стану таким же опытным тоже сразу буду видеть что под чем скрывается. 8)
А как же до этого момента определять? :blink:
Я специально ещё раз прицелом поводил, всё окно обошёл - нигде Edit не появляется. :'(
Жду Control Viewer с особым нетерпением. :beer: :IL_AutoIt_1:
 
Верх