1

Тема: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Здравствуйте, мне необходим некоторый ликбез по работе с COM-объектами.

Преамбула: есть Acc library и скрипт/tool Accessible Info Viewer, с помощью которых можно получать информацию, например, из Firefox (и со всех страниц, открытых в нём).
Скрипты и библиотека - устаревшие, с багами, уже 2 года как не дорабатываются и похоже давно заброшены, а опыт работы с COM-объектами есть не у многих ahk-форумчан, так что я решил спросить и здесь.

Собственно вопрос: я научился-таки с помощью этой библиотеки и скрипта Accessible Info Viewer получать некоторую информацию об объектах со страниц, открытых в Firefox.
Если с текстовым контентом всё более или менее понятно, то с картинками/флэш-объектами/видео-объектами - мне не понятно что вообще с ними можно делать:
1. можно ли их перенести/копировать_в GUI своего скрипта? Если да - то как?
2. имеют ли они вообще hwnd, указывающий на их расположение в памяти?
3. какие к ним можно применять ahk-команды? можно ли, например, применить WinSet,SetStyle? или resize? или удалять их вообще?

2

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Скрипты и библиотека - устаревшие, с багами

В чём заключается устаревание, и какие баги?

1. можно ли их перенести/копировать_в GUI своего скрипта? Если да - то как?

Думаю что можно. Тут нужен конкретный пример.

2. имеют ли они вообще hwnd, указывающий на их расположение в памяти?

Элементы, это объекты в объектной модели документа (DOM). У них есть индекс, также часто тип, имя, класс и.т.п. для обращения, либо можно получить сам объект элемента.

3. какие к ним можно применять ahk-команды?

ahk-команды - нет. Можно использовать методы этих объектов, изменить позицию, размер, стиль можно у большинства (скорее у всех) элементов.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

serzh82saratov пишет:

В чём заключается устаревание, и какие баги?

Устаревание заключается в заброшенности проекта, а баги - например, в неверном определении пути к просматриваемому объекту: если мишень перетащить на объект, то в статус баре показывается неверный путь. Но можно узнать верный путь открыв дерево объектов и вручную найдя в нём нужный.

Думаю что можно. Тут нужен конкретный пример.

Эээ, ну, например любая страница ютуба содержит html5/flash видео объект. А уж страницу с картинкой найти - по-моему, и вовсе не проблема.

Элементы, это объекты в объектной модели документа (DOM). У них есть индекс, также часто тип, имя, класс и.т.п. для обращения, либо можно получить сам объект элемента.

Что значит "получить сам объект элемента"? Захватить, чтобы можно было его перенести? или как?

ahk-команды - нет. Можно использовать методы этих объектов, изменить позицию, размер, стиль можно у большинства (скорее у всех) элементов.

Ну, в Firefox'е к любому DOM-объекту (кроме специфических, типа script) можно применять CSS-стили, например. А это и удобно и огромный простор для творчества. Я это умею, но только изнутри самого браузера, а как это сделать в ahk на примере какого-нибудь скрипта - не покажете ли?

4

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Эээ, ну, например любая страница ютуба содержит html5/flash видео объект. А уж страницу с картинкой найти - по-моему, и вовсе не проблема.

Это не конкретный пример.

Я это умею, но только изнутри самого браузера

Что значит внутри браузера?

а как это сделать в ahk

Как понять в АНК?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

5 (изменено: Drugoy, 2014-09-21 12:55:27)

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

serzh82saratov пишет:

Это не конкретный пример.

:-/ ну ок, вот конкретный пример: https://www.youtube.com/watch?v=1rclnZWOlyM

serzh82saratov пишет:

Что значит внутри браузера?

То и значит: средствами Firefox и/или его дополнений можно применять CSS-стили к любым элементам: будь то интерфейс браузера или содержимое на странице. С помощью CSS можно и двигать объекты (в пределах документа, а "документ" - всегда более узкое понятие, чем "окно").

serzh82saratov пишет:

Как понять в АНК?

AHK позволяет делать свои GUI окна? Позволяет. Если AHK ещё позволяет и переносить/копировать COM-объекты, то можно было бы видно со страницы перенести/скопировать в своё GUI.

6 (изменено: DanceWoman, 2014-09-22 16:30:23)

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Drugoy пишет:

То и значит: средствами Firefox и/или его дополнений можно применять CSS-стили к любым элементам: будь то интерфейс браузера или содержимое на странице. С помощью CSS можно и двигать объекты (в пределах документа, а "документ" - всегда более узкое понятие, чем "окно").

В Opera и Chrome  вроде тоже такое есть!

Кодэры код кодировали кодировали, да не не выкодирыровали... :)

7

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

DanceWoman пишет:

В Opera и Chrome  вроде тоже такое есть!

Нет там такого, но это и не важно, т.к. никому не интересно что там в хроме и в хроме.

8

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

:-/ ну ок, вот конкретный пример: https://www.youtube.com/watch?v=1rclnZWOlyM

Это не пример, а просто ссылка, в чём конкретная задача?

то можно было бы видно со страницы перенести/скопировать в своё GUI.

Почему не проще открыть ссылку сразу в окне АНК?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Loop {

Drugoy пишет:

Если с текстовым контентом всё более или менее понятно, то с картинками/флэш-объектами/видео-объектами - мне не понятно что вообще с ними можно делать:
1. можно ли их перенести/копировать_в GUI своего скрипта? Если да - то как?

serzh82saratov пишет:

Думаю что можно. Тут нужен конкретный пример.

Drugoy пишет:

Эээ, ну, например любая страница ютуба содержит html5/flash видео объект. А уж страницу с картинкой найти - по-моему, и вовсе не проблема.

serzh82saratov пишет:

Это не конкретный пример.

Drugoy пишет:

:-/ ну ок, вот конкретный пример: https://www.youtube.com/watch?v=1rclnZWOlyM

serzh82saratov пишет:

Это не пример, а просто ссылка, в чём конкретная задача?

}

serzh82saratov пишет:

Почему не проще открыть ссылку сразу в окне АНК?

Потому что задача стоит иная. Я сёрфю в браузере. В Firefox. Попадается какой-то объект, который я хочу перенести со страницы в GUI окно AHK. Я задал вопрос "как это сделать?" и мы вступили в петлю, где сначала вы от меня просите уточнить задачу, а когда я уточняю всё до деталей то вы снова спрашиваете чего я хочу.

10

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Drugoy пишет:

Я сёрфю в браузере. В Firefox. Попадается какой-то объект, который я хочу перенести со страницы в GUI окно AHK. Я задал вопрос "как это сделать?"

С помощью AHK никак. Из FF даже html-документ получить невозможно.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

11

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Допустим, можно достать из Mozilla html-код или просто сохранить страницу в файл. Можно воспользоваться командой URLDownloadToFile. Можно вставить в AutoHotkey GUI элемент IE. А какова цель - сделать из AutoHotkey интернет-обозреватель? Не ясно, в какую сторону направлены поиски.

12

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

ypppu пишет:

можно достать из Mozilla html-код или просто сохранить страницу в файл.

А как это сделать, не открывая дополнительных окон?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

13

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

teadrinker пишет:

С помощью AHK никак. Из FF даже html-документ получить невозможно.

А сам html документ для этих целей и не нужен, достаточно его DOM-представления, которое из FF можно получить с помощью AHK.
Другими словами: если я могу дёргать текстовое содержимое страниц, открытых в лисе скриптом ahk, то что нужно сделать, чтоб я мог также дёргать и картинки оттуда и видео (хтмл5- и флэш-видео).

14

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Drugoy пишет:

А сам html документ для этих целей и не нужен, достаточно его DOM-представления, которое из FF можно получить с помощью AHK.

Я, собственно, под документом и имел в виду DOM. Как вы получите его из FF?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

15

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Через Clipboard?

16

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

ypppu пишет:

Допустим, можно достать из Mozilla html-код или просто сохранить страницу в файл. Можно воспользоваться командой URLDownloadToFile. Можно вставить в AutoHotkey GUI элемент IE. А какова цель - сделать из AutoHotkey интернет-обозреватель? Не ясно, в какую сторону направлены поиски.

Нет, всё вышеописанное не можно: не всякий контент доступен из другого браузера (у меня Firefox, а AHK полу-нативно умеет использовать IE), не всякий контент вообще доступен из новой сессии даже с теми же самыми куками.
Цель - сделать detach объекта из браузера в отдельное окно.

17 (изменено: Drugoy, 2014-09-24 11:15:12)

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

teadrinker пишет:

Я, собственно, под документом и имел в виду DOM. Как вы получите его из FF?

С помощью инструментов из шапки темы. В библиотеке есть функции для доступа к DOM-дереву лисы (и самого интерфейса лисы, т.к. он тоже DOM) и DOM-дереву каждой страницы с каждой вкладки.
AccViewer - это proof of concept.
Скрипт на gist.gitgub иллюстрирует получение информации об объекте по его условному пути в дереве, которое рисует AccViewer.

У меня сначала не работало и я не понимал как этим пользоваться, но теперь я знаю где баг и знаю как получать информацию (в том числе содержимое) об объекте.

У ютубных флэш-контейнеров даже на не-ютубных страницах, прямо в COM-объекте, соответстующем флеш-плееру со страницы, содержится URL страницы с видео. Но хочется скопировать сам объект-то.

18

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Malcev пишет:

Через Clipboard?

Я не очень понял ваш вопрос. Вы это вообще мне? Или это предполагаемый ответ на вопрос teadrinker'а?

19

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

И вам и teadrinker`у.
А потом уже парсить клипбоард и вставлять нужный код в гуи.

20

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Malcev пишет:

И вам и teadrinker`у.
А потом уже парсить клипбоард и вставлять нужный код в гуи.

А, ну, на это я уже ответил выше. Так можно, но это путь обхода: для некоторых случаев сгодится, но не для всех.

21

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Drugoy пишет:

С помощью инструментов из шапки темы. В библиотеке есть функции для доступа к DOM-дереву лисы

Заблуждаетесь. Там есть функции для получения IAccessible интерфейса и, соответственно, Accessible-структуры. Это совсем не то, что DOM.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

22

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

teadrinker пишет:

Заблуждаетесь. Там есть функции для получения IAccessible интерфейса и, соответственно, Accessible-структуры. Это совсем не то, что DOM.

Аааа. Возможно. Я на самом деле мало в этом понимаю: я лишь увидел, что AccViewer показывает дерево из элементов этого окна и что можно посмотреть некоторые их свойства и значение (для текста).
DOM, в принципе, выглядит абсолютно так же, только он ещё и айди, классы и теги поддерживает.
HTML разметка нам, получается, недоступна. Но структура страницы (взаимосвязь узлов) и содержимое узлов - доступно. Этого всё равно недостаточно для затеянного?

23

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

А что Вы затеяли с картинками/флэш-объектами/видео-объектами?
Если нужно скопировать из браузера в AutoHotkey GUI, то, вроде, серьёзных трудностей нет.
Если же требуется их перенести - я с трудом представляю, как это возможно и зачем нужно.

24

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Drugoy пишет:

Этого всё равно недостаточно для затеянного?

Да я, честно говоря, не представляю, как можно было бы перенести/копировать флеш или видео -объекты, даже имея доступ к DOM, например, в IE. Насколько я знаю, в GUI можно встроить IE, но не его дочерние объекты отдельно.

ypppu пишет:

Если нужно скопировать из браузера в AutoHotkey GUI, то, вроде, серьёзных трудностей нет.

А пример можно, как скопировать флеш-объект в GUI?

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

25

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

http://www.autohotkey.com/board/topic/6 … nto-a-gui/

26

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Ну, там в GUI сначала IE встраивается, а в нем уже флеш проигрывается. Впрочем, если такой вариант ТС устроит, могу перевести на AHK_L.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

27

Re: AHK: COM-объекты: можно ли их перенести из браузера в свой GUI?

Собственно, вот:

url := "http://www.youtube.com/embed/NlMTpZ_PyfY?autoplay=1"
code := "<iframe width=960 height=620 src=""" url """ frameborder=0 allowfullscreen></iframe>"

Gui Add, ActiveX, x0 y0 w980 h640 vWB, Shell.Explorer
WB.Navigate("about:blank")
WB.document.write(code)
Gui, Show, w980 h640
Return

GuiClose:
   ExitApp

Можно подставить адрес картинки, тоже сработает.
Однако, если в FF адрес картинки через IAccessible по координатам можно получить, то как выдрать источник видео — понятия не имею.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder