Что нового

Взаимодействие с окном класса XHTMLFrameView

Cusium

Новичок
Сообщения
9
Репутация
0
Здравствуйте! При взаимодействии с приложением (PDF24Creator) выскакивает окно (класс XHTMLFrameView). Класс это всё что известно об этом окне (Auto Win info, InqSoftWin Scanner: больше ничего не показывают), ну ещё 'title'.
На этом окне есть несколько элементов с которыми можно взаимодействовать (только мышкой), но они не имеют ID (Они вообще ничего не имеют). Как выбрать/кликнуть нужное?
Пробовал так, не получается. Оно как бы окно...Но границ и координат у него нет.
Код:
ControlClick ( $hMenu, "", "[CLASS:XHTMLFrameView]", "main", 1, 176, 60)

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

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Для окна "PDF File Tool"
Код:
; кнопка "Переместить файл вниз" (над списком)
ControlClick("PDF File Tool", "", "", "", 1, 74, 14)

; кнопка "Напечатать в PDF" (в центральной части)
ControlClick("PDF File Tool", "", "XHTMLFrameView1", "", 1, 220, 40)
 
Автор
C

Cusium

Новичок
Сообщения
9
Репутация
0
InnI сказал(а):
Для окна "PDF File Tool"
Код:
; кнопка "Переместить файл вниз" (над списком)
ControlClick("PDF File Tool", "", "", "", 1, 74, 14)

; кнопка "Напечатать в PDF" (в центральной части)
ControlClick("PDF File Tool", "", "XHTMLFrameView1", "", 1, 220, 40)

Здравствуйте! Надеюсь и в этот раз Вы мне поможете.
С окном "PDF File Tool" проблем нет и выбрать "Объединить" по координатам получилось сразу. А вот со следующим окном "Select Profile" уже не получается.
В обоих случаях класс объекта XHTMLFrameView, но в первом случае он находится внутри окна "PDF File Tool" у которого есть внутренние координаты, а вот во втором, этот объект XHTMLFrameView и есть "окно".
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Cusium
со следующим окном "Select Profile" уже не получается
Два раза нужно кликнуть... по-другому "не понимает"
Код:
; Хорошее
ControlClick("Select Profile", "", "", "", 1, 310, 60)
ControlClick("Select Profile", "", "", "", 1, 310, 60)
 
Автор
C

Cusium

Новичок
Сообщения
9
Репутация
0
InnI сказал(а):
Cusium
со следующим окном "Select Profile" уже не получается
Два раза нужно кликнуть... по-другому "не понимает"
Код:
; Хорошее
ControlClick("Select Profile", "", "", "", 1, 310, 60)
ControlClick("Select Profile", "", "", "", 1, 310, 60)

Просто *facepalm*...А я два часа думал как решить проблему. Всё гениальное - просто.
А есть какое-то логическое объяснение этому "феномену"?
Плохо конечно что нет других вариантов, более надёжных=)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Cusium
какое-то логическое объяснение
Это вам нужно у разработчиков спросить. Возможно, считываются реальные координаты курсора мыши. Этим, кстати, можно объяснить невозможность ControlClick'а при нахождении курсора мыши над этим окном, но не над нужным элементом. Так что убирайте курсор от окна перед выполнением скрипта.

А вообще, подобные интерфейсы лучше использовать по назначению, т.е. через MouseClick().
 
Автор
C

Cusium

Новичок
Сообщения
9
Репутация
0
InnI сказал(а):
Cusium
какое-то логическое объяснение
Это вам нужно у разработчиков спросить. Возможно, считываются реальные координаты курсора мыши. Этим, кстати, можно объяснить невозможность ControlClick'а при нахождении курсора мыши над этим окном, но не над нужным элементом. Так что убирайте курсор от окна перед выполнением скрипта.

А вообще, подобные интерфейсы лучше использовать по назначению, т.е. через MouseClick().

На счёт курсора уже понял, во время второго испытания скрипта он был на окне и скрипт не отработал.
Первый раз я так и сделал, всё через MouseClick(), но есть вероятность что на другом компе он "не попадёт в цель" =)
 

InnI

AutoIT Гуру
Сообщения
4,912
Репутация
1,429
Cusium
есть вероятность что на другом компе
При настройке относительно клиентской области вероятность будет сравнима с ControlClick
Код:
Opt("MouseCoordMode", 2)
WinActivate("Select Profile")
MouseClick("", 310, 60, 1, 0)
 
Верх