|
Доступ к существующему объекту InternetExplorer | ☑ | ||
---|---|---|---|---|
0
ProgerLink
02.10.13
✎
21:27
|
Привем коллегам.
Друзья, кто знает, как подключиться к существующему объекту "InternetExplorer.Application", и его свойству "Document" со всем содержимым страницы ??? Через COMОбъект("Shell.Application") можно получить все Эксплореры, но свойство document будет без содержимого страницы. Приемлем любой вариант, в том числе используя WSH/WMI/Delphi/C |
|||
1
ProgerLink
02.10.13
✎
22:33
|
Какие еще варианты
|
|||
2
Asmody
02.10.13
✎
22:36
|
Я так подозреваю, что доступ внешнего приложения внутрь браузера несколько противоречит концепции безопасности последнего. Хотя можно, наверно, чем-нибудь типа autoit'а скопировать содержимое страницы
|
|||
3
ProgerLink
02.10.13
✎
22:41
|
кто еще может предложить вариант, либо утвердить невозможность
|
|||
4
ProgerLink
02.10.13
✎
22:57
|
рассмотрю рабочий вариант за вознаграждение
|
|||
5
Torquader
02.10.13
✎
23:49
|
Скорей всего, никак - "ослик" создаёт нормальный OLE-интерфейс только по запуску с ключом -embedding, причём объект создаётся для одного сеанса - для остальных - создаются другие объекты.
Через Shell можно получить окна просмотра файловой системы, а не окна браузера (хотя, на самом деле, это одно и то же). При доступе к браузеру работает ограничение безопасности такое же как и при доступе к iframe с содержимым другого домена (локальные файлы находятся в локальной зоне). |
|||
6
Jaap Vduul
03.10.13
✎
00:57
|
Давно когда-то писал компоненту (ещё для 7.7) - как раз получал доступ к запущенному экзнмпляру IE через Shell.Application.Windows и проблем с получением содержимого не было.
Насколько знаю, она до сих пор у клиента работает (а это, как минимум, IE8). |
|||
7
ProgerLink
03.10.13
✎
09:45
|
(6) Вы бы меня очень выручили своим решением, тем более если решение как внешняя компонента. Как с вами можно связаться ?
|
|||
8
ProgerLink
03.10.13
✎
09:48
|
Друзья, может кто еще имеет решение ?
|
|||
9
ProgerLink
03.10.13
✎
13:10
|
Ап
|
|||
10
ProgerLink
03.10.13
✎
13:24
|
Человек знающий ответ, зайди же уже на эту ветку, не проходи мимо, тебя здесь ждут пипец как
|
|||
11
dk
03.10.13
✎
13:33
|
пробовал через ПолучитьCOMОбъект?
|
|||
12
sikuda
03.10.13
✎
13:35
|
(0) Ты определись зачем тебе IE нужен. Для данных есть ссылка на интернет ресурс. Для движка. А что именно. Может "htmlfile" достаточно.
|
|||
13
ProgerLink
03.10.13
✎
13:49
|
не написал ранее, пардон.
Для чего нужен IE либо его альтернатива, если предложите. Необходимо анализировать содержимое страницы на таблица, ссылки, рисунки. На некоторых ссылках висят скрипты события, поэтому приходится вызывать метод ".Click()", но вновь открытое окно браузера, я словить не могу, мне его так же надо анализировать и работать с сылками, включая метод Click. Т.е. через Navigate не получится! |
|||
14
ProgerLink
03.10.13
✎
14:33
|
(11) С Екселем работает, с IE пишет ошибку
|
|||
15
ProgerLink
03.10.13
✎
14:36
|
В общем вопрос открыт и никапли не продвинулся в решении.
Объект "HTML" 1С овский не подходит, нет возможности выполнять Click() для ссылок. ПолеHTMLДокумента тоже не поможет, вновь открытые страницы после перехода по некоторым ссылкам появляются как новые процессы "InternetExplorer". HTTP советовал кто то, но думаю что к моей задачи это слабо относится |
|||
16
smaharbA
03.10.13
✎
14:40
|
shell.aplication - windows
|
|||
17
ProgerLink
03.10.13
✎
14:41
|
(16) Все что будет идти в document, полученный через shell.aplication - windows(), будет без данных
|
|||
18
ProgerLink
03.10.13
✎
15:35
|
Готов материально поощрить того кто найдет решение. Размер поощрения 10 000 руб
|
|||
19
smaharbA
03.10.13
✎
15:44
|
(17) щаз
|
|||
20
smaharbA
03.10.13
✎
15:45
|
(18) готов сделать за час с перекуром
|
|||
21
ProgerLink
03.10.13
✎
15:46
|
(19) Обрати внимание на коллекию "all" и "body" объекта document
|
|||
22
ProgerLink
03.10.13
✎
15:46
|
давай свой скайп, чего мусорить
|
|||
23
smaharbA
03.10.13
✎
15:57
|
smaharba.go
только у меня нет ни микрофона, ни камеры тут |
|||
24
ProgerLink
03.10.13
✎
16:31
|
Как успехи ?
|
|||
25
smaharbA
03.10.13
✎
17:31
|
(24) дак я не понял, точно нужно ?
если да - стучись |
|||
26
smaharbA
03.10.13
✎
17:44
|
нету времени много разглагольствовать, тупенько если
ЗапуститьПриложение("explorer http://www.mista.ru"); Скрипт=Новый COMОбъект("MSScriptControl.ScriptControl"); Скрипт.language="JScript"; Скрипт.AddCode("function body(x){return x.document.body}"); Шел=Новый COMОбъект("shell.application"); Вопрос("ххх",РежимДиалогаВопрос.ОК,3); Окна=Шел.Windows(); Для Каждого Окно Из Окна Цикл Скрипт.AddObject("Окно",Окно); Сообщить(Скрипт.Eval("Окно.document.body.innerText")); Скрипт.Reset(); КонецЦикла; |
|||
27
smaharbA
03.10.13
✎
17:45
|
Бабло когда ждать ?
|
|||
28
ProgerLink
03.10.13
✎
17:55
|
Я на работе пока, не могу по личным проектам отвлекаться. Вечером свяжусь, по скайпу!
|
|||
29
ProgerLink
03.10.13
✎
17:57
|
В скайп к тебе сразу постучался, только никто не открывает. Если не ошибаюсь ты "Олег" который
|
|||
30
smaharbA
03.10.13
✎
18:18
|
Да
|
|||
31
smaharbA
03.10.13
✎
18:19
|
Вариант
ЗапуститьПриложение("explorer http://www.mista.ru"); ХТМЛ=Новый COMОбъект("htmlfile"); ХТМЛ.Open("text/html"); //<-- Подготовим нужные методы ХТМЛ.Write("<script> |var ХТМЛ; |Документ=function(x){return x.document}; |Тело=function(x){return x.body}; |Текст=function(x){return x.innerText}; |ТекстХТМЛ=function(x){return x.innerHTML}; |ЭлементыПоИмени=function(x,y){return x.getElementsByTagName(y)}; |Длинна=function(x){return x.length}; |</script>"); Док=ХТМЛ.documentElement.document; // Внедрение объекта Скрипта в самого себя, для сохранности контекста Док.script.ХТМЛ=ХТМЛ; // Все подготовке --> Это=Док.script; Шел=Новый COMОбъект("shell.application"); Вопрос("ххх",РежимДиалогаВопрос.ОК,3); Для Каждого Окно Из Шел.Windows() Цикл Документ=Это.Документ(Окно); Тело=Это.Тело(Документ); Текст=Это.Текст(Тело); ТекстХТМЛ=Это.ТекстХТМЛ(Тело); Ссылки=Это.ЭлементыПоИмени(Документ,"a"); Сообщить(Текст); Сообщить(ТекстХТМЛ); Сообщить("Ссылок="+Это.Длинна(Ссылки)); КонецЦикла; |
|||
32
smaharbA
03.10.13
✎
18:23
|
к слову, можно сделать только встроенными средствами 1с
|
|||
33
ProgerLink
03.10.13
✎
18:36
|
Если можно только встроенными средствами, то это было бы гораздо удобнее в плане отладки кода!
|
|||
34
smaharbA
03.10.13
✎
19:21
|
Не совсем только встроенными, болванка тут
Перем Это,Шел; Процедура ПолучитьДанныеИнтернетЭксплорера(Кнопка) ЗапуститьПриложение("explorer http://www.mista.ru"); Вопрос("Ждем",РежимДиалогаВопрос.ОК,3); Для Каждого Окно Из Это.Окна(Новый COMОбъект("shell.application")) Цикл Документ=Это.Документ(Окно); Тело=Это.Тело(Документ); Текст=Это.Текст(Тело); ТекстХТМЛ=Это.ТекстХТМЛ(Тело); Ссылки=Это.ЭлементыПоИмени(Документ,"a"); Сообщить(Текст); Сообщить(ТекстХТМЛ); Сообщить("Ссылок="+Это.Длинна(Ссылки)); КонецЦикла; КонецПроцедуры Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) // Вставить содержимое обработчика. ГСЧ = Новый ГенераторСлучайныхЧисел(Число(Формат(ТекущаяДата(),"ДФ=ггггММддччммсс"))); Имя="ПолеХТМЛ"+Формат(ГСЧ.СлучайноеЧисло(9999, 429496729),"ЧГ=0"); Пока Не ЭтаФорма.ЭлементыФормы.Найти(Имя)=Неопределено Цикл Имя="ПолеХТМЛ"+Формат(ГСЧ.СлучайноеЧисло(9999, 429496729),"ЧГ=0"); КонецЦикла; ПолеХТМЛ=ЭтаФорма.ЭлементыФормы.Добавить(Тип("ПолеHTMLДокумента"),Имя); ПолеХТМЛ.УстановитьДействие("ДокументСформирован",Новый Действие("ДокументСформирован")); ПолеХТМЛ.УстановитьТекст("<script> |Окна=function(x){return x.Windows()}; |Документ=function(x){return x.document}; |Тело=function(x){return x.body}; |Текст=function(x){return x.innerText}; |ТекстХТМЛ=function(x){return x.innerHTML}; |ЭлементыПоИмени=function(x,y){return x.getElementsByTagName(y)}; |Длинна=function(x){return x.length}; |//alert(123); |</script>"); КонецПроцедуры Процедура ДокументСформирован(Элемент) // Вставить содержимое обработчика. Документ=Элемент.Документ; Это=Документ.Script; ГСЧ = Новый ГенераторСлучайныхЧисел(Число(Формат(ТекущаяДата(),"ДФ=ггггММддччммсс"))); Имя="ПолучитьДанныеИнтернетЭксплорера"; Если ЭтаФорма.ЭлементыФормы.Найти(Имя)=Неопределено Тогда Кнопка=ЭтаФорма.ЭлементыФормы.Добавить(Тип("Кнопка"),Имя,Истина); Кнопка.Доступность=Истина; Кнопка.Видимость=Истина; Кнопка.Высота=30; Кнопка.Ширина=100; Кнопка.Верх=ЭтаФорма.Высота-Кнопка.Высота; Кнопка.Лево=10; Кнопка.Заголовок=Имя; Кнопка.УстановитьДействие("Нажатие",Новый Действие(Имя)); КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |