Что нового

Не работают функции (Controls)!

Kalisnik

Эволюция
Сообщения
295
Репутация
63
У меня почему-то совершенно не работают функции (Controls) для управляющих элементов приложения FineReader 10. В частности для "ABBYY Screenshot Reader". Может кто знает в чем причина? Вот пример кода, все стандартно:
Код:
WinActivate("ABBYY Screenshot Reader")
WinWaitActive("ABBYY Screenshot Reader")
ControlClick("ABBYY Screenshot Reader", "", "Button1")
 

Yashied

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

Kalisnik

Эволюция
Сообщения
295
Репутация
63
Yashied сказал(а):
К таким вопросам нужно по умолчанию прилагать скриншот AutoIt Window Info. А то разговор получится беспредметный.
Конечно-конечно!!! Как-то я сразу не подумал... :-\...... Недодумка напала! :shok:
Вот: :smile:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Kalisnik
А так попробуйте
Код:
ControlClick("ABBYY Screenshot Reader", "", "[CLASS:Button; INSTANCE:1]")
 
Автор
K

Kalisnik

Эволюция
Сообщения
295
Репутация
63
madmasles сказал(а):
Kalisnik
А так попробуйте
Код:
ControlClick("ABBYY Screenshot Reader", "", "[CLASS:Button; INSTANCE:1]")

Пробовал. Функция все равно возвращает "0" :laugh:
Я вот что подумал: не может ли эта проблема быть как-то связанной с 64 битной ОС, коя у меня и установлена. :wacko:
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Kalisnik сказал(а):
Пробовал. Функция все равно возвращает "0"...

А если попробывать перед этим поставить

Код:
Opt('WinTitleMatchMode', 3)
 
Автор
K

Kalisnik

Эволюция
Сообщения
295
Репутация
63
Yashied сказал(а):
Kalisnik сказал(а):
Пробовал. Функция все равно возвращает "0"...

А если попробывать перед этим поставить

Код:
Opt('WinTitleMatchMode', 3)

Не сработало. Уж не знаю что и делать ((( Придется эмуляцию мышки прописывать ((
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Ладно, давай по порядку. Сравни то, что выдает ControlGetHandle() со значением в AutoIt Window Info.

Код:
$hWnd = ControlGetHandle("ABBYY Screenshot Reader",  "", "[CLASS:Button; INSTANCE:1]")
ConsoleWrite($hWnd & @CR)
 
Автор
K

Kalisnik

Эволюция
Сообщения
295
Репутация
63
Я не знаю как консолью пользоваться, но вот так:
Код:
$hWnd  = ControlGetHandle("ABBYY Screenshot Reader",   "", "[CLASS:Button; INSTANCE:1]")
ConsoleWrite($hWnd & @CR)
$data = ConsoleRead()
MsgBox(0, "123", $data)


И вот так:
Код:
$hWnd  = ControlGetHandle("ABBYY Screenshot Reader",   "", "[CLASS:Button; INSTANCE:1]")
MsgBox(0, "123", $hWnd)


ControlGetHandle выдает ошибку и значение $hWnd равно False.
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Вот так пробуй:
Код:
ControlClick("ABBYY Screenshot Reader", "", "[CLASSNN:Button1]")

Получилось?
 

Yuri

AutoIT Гуру
Сообщения
737
Репутация
282
Ну, вот еще такой вариант:
Код:
ControlClick("ABBYY Screenshot Reader", "", "С&тарт!")


И еще такой вот:
Код:
ControlSend("ABBYY Screenshot Reader",  "", "", "{ALT}т")

Здесь т - русская.
Это комбинация ALT + т, потому что - С&тарт! - после & т русская.
 
Автор
K

Kalisnik

Эволюция
Сообщения
295
Репутация
63
Да я даже фокус на объект Control не могу поставить... и вообще не один элемент этого окна не возвращает внутренний идентификатор. Что уж тут говорить? Простые модификации кода здесь не помогут, так как думается мне, что проблема уровнем выше....
Может на этом приложении защита стоит какая-нибудь? Такое в принципе возможно?
Или это баг AutoIt?
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Скачал я этот ABBYY Screenshot Reader. Вот я удивляюсь, они хотят за эту программу денег, а написать GUI по человечески не хотят (не могут), и зделано это все как-то через ж***.

ControlClick() не работает потому, что эта :Censored: кнопка полускиновая :Censored: и окно должно быть активно в момент нажатия (актуально, когда окно видимое, в трее и так работает). Вообщем, еще раз разочаровываюсь в ABBYY.

Код:
Opt('WinWaitDelay', 0)

$hWnd = WinGetHandle('[TITLE:ABBYY Screenshot Reader; CLASS:#32770]')
$hCtrl = ControlGetHandle($hWnd, '', 'Button1')
If BitAND(WinGetState($hWnd), 2) Then
	WinActivate($hWnd)
EndIf
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hCtrl, 'int', 0x0200, 'int', 0, 'dword', 0)
Sleep(50)
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hCtrl, 'int', 0x0201, 'int', 1, 'dword', 0)
Sleep(50)
DllCall('user32.dll', 'int', 'SendMessage', 'hwnd', $hCtrl, 'int', 0x0202, 'int', 1, 'dword', 0)



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

Хотя можно и через ControlClick().

Код:
Opt('WinWaitDelay', 0)

$hWnd = WinGetHandle('[TITLE:ABBYY Screenshot Reader; CLASS:#32770]')
If BitAND(WinGetState($hWnd), 2) Then
	WinActivate($hWnd)
EndIf
ControlClick($hWnd, '', 'Button1')
 
Автор
K

Kalisnik

Эволюция
Сообщения
295
Репутация
63
Yashied, красава! Работает!!!! Я уж и не надеялся :IL_AutoIt_1:
Спасибо, спасибо... 404 раза спасибо!!! :beer:
 
Верх