Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Помогите с MSHTML.dll

Автор: weel
Дата сообщения: 09.01.2009 02:02
Ребята, нужна помощь, я уже пол года по нету лажу ниче не могу найти!
Проблема с взаимодействием VB и JS.Пишу прогу, которая работает с HTML страницей, и в основном там JS. Проблема такова: получаю м помощью MSHTML.dll по Id текстовое поле, изменяю его TEXTAREA.value ,причем оно меняется, получаю по Id кнопку Сохранить нажимаю ее, НО-при перегрузке страницы значение не меняется!!!!
Если же сделать фокус и отправить сообщение окну Ctrl+V то поле изменяется и значение остается.Мне надо чтоб прога работала в фоновом режиме,нет возмозности оставлять активным окно чтоб отправить в него Ctrl+V.Как можно поменять value чтоб оно сохранилось?Каким образом JS различает, я с клавиатуры ввожу или с программы, если событий onkeydown и т.п. к текстовому полю и к форме нету?
В случае, если изменить значение value и с клаиатуры лописать символ или пробел, то есть как-нибудь изменить значение, при сохранении все остается.

Код:
Dim Y As HTMLDocument
Dim rc As HTMLTextAreaElement
Set Y = web.Document
For Each rc In Y.All

If rc.Id = "ms31" Then 'получаю по Ид текстовое поле
rc.Value = "1111111111" 'изменяю его значение
End If

Next rc
Set rc = Nothing
Set Y = Nothing
Автор: Cheery
Дата сообщения: 09.01.2009 02:04
weel
дублировать то темы не нужны..
я же указал в чем дело - сгенерите события onclick или onkeypressed для элементов
Автор: weel
Дата сообщения: 09.01.2009 02:08
Я извиняюсь...
еще можно вопросик-onclick:
document ... .getElementsById('ms31').Click() ?
и как с onkeypressed?
Автор: Cheery
Дата сообщения: 09.01.2009 02:21
weel

Цитата:
и как с onkeypressed?

просто вызовите те функции, что при обработке вызываются.
только если вы все автоматизируете, то зачем поля вводить и так далее? не проще имитировать конечный запрос?
события клавы доступны только в DOM3
https://developer.mozilla.org/en/DOM/document.createEvent#Notes
Автор: weel
Дата сообщения: 09.01.2009 02:46
Cheery
Огромное спасибо!Получилось!Не одна неделя проведенных ночей безсонных не прошла зря!

Поля вводятся атоматически, без участия пользователя.
Я не программист, работаю в другой сфере, год назад решил облегчить себе и другим работу, начал учить VB, VBA и VBS.JS трудно воспринять, хотя он может и простой.


эти 3 строчки решили проблему:

Dim sc As HTMLWindow2
Set sc = Y.parentWindow
sc.execScript ("document.getElementById('ms31').onchange()")

еще раз СПАСИБО!

Страницы: 1

Предыдущая тема: декомпиляция приложений


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.