Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBScript/JScript/WSH/WMI/HTA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
cyber542
3 / 0 / 0
Регистрация: 22.01.2015
Сообщений: 7
1

SendKeys в определенном окне

25.01.2015, 14:15. Просмотров 1447. Ответов 6
Метки нет (Все метки)

Здравствуйте.
Я пытаюсь сделать скрипт, который автоматически нажимает кнопки в определенном окне.
К примеру, захожу на сайт и вписываю в определенное поле текст.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Dim strUrl, oIE, oTag
strUrl = "http://www.cyberforum.ru/search.php"
Set oIE = CreateObject("InternetExplorer.Application")
Set objShell = WScript.CreateObject("WScript.Shell")
 
oIE.Visible = True
oIE.Navigate strUrl
WScript.Sleep 3000
 
oIE.getElementByName("query").focus
objShell.SendKeys"h"
WScript.Sleep 333
objShell.SendKeys"e"
WScript.Sleep 333
objShell.SendKeys"l"
WScript.Sleep 333
objShell.SendKeys"l"
WScript.Sleep 333
objShell.SendKeys"o"
WScript.Sleep 333
Но проблема в том, что если я переведу фокус на другое окно, то все эти кнопки будут продолжать нажиматься, только в другом окне. Мне же нужно, чтобы SendKeys отправлялись только в InternetExplorer не зависимо от того, есть ли фокус на окне IE.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2015, 14:15
Ответы с готовыми решениями:

Перестал работать WshShell.SendKeys
Доброго времени суток! Имеется небольшой скрипт по запуску которого должно...

.SendKeys не выполняется во время загрузки Windows 7
Добрый день, положил следующий скрипт в автозагрузку. После старта вижу окно...

Может ли .SendKeys послать Alt-Tab ?
Пишу: %{TAB} - не работает ! Совсем нельзя или я чего то туплю ?

Click срабатывает только один раз и SendKeys не работает
Здравствуйте! Нужна подсказка от людей, которые более глубоко знают VBScript....

Запуск скрипта на определенном сайте
Имеется скрипт, который запускается в на конкретных браузере и сайте: dim...

6
Dmitrii
2603 / 535 / 107
Регистрация: 21.03.2012
Сообщений: 1,043
25.01.2015, 19:35 2
Цитата Сообщение от cyber542 Посмотреть сообщение
... нужно, чтобы SendKeys отправлялись только в InternetExplorer не зависимо от того, есть ли фокус на окне IE
Это невозможно, т.к. метод SendKeys позволяет посылать последовательности только в активное окно.
0
cyber542
3 / 0 / 0
Регистрация: 22.01.2015
Сообщений: 7
25.01.2015, 19:46  [ТС] 3
Спасибо Dmitrii.
А в таком случае, возможно ли как-то использовать .document.DetElementById но чтобы в параметр ID отправлять не сразу весь текст, а каждую букву по очереди с заданым интервалом Wscript.Sleep.
К примеру:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
'Вместо:'
 oIE.Document.getElementByID("query").Value = "hello"
 
'нужно как-то так'
oIE.Document.getElementByID("query").Value = "h"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = "e"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = "l"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = "l"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = "o"
Но в моем варианте каждая новая буква заменяется, а нужно чтобы добавлялись буквы.
0
buggydancer
250 / 238 / 16
Регистрация: 31.12.2009
Сообщений: 324
26.01.2015, 11:21 4
cyber542, а такой вариант не подойдет?
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
'Вместо:'
 oIE.Document.getElementByID("query").Value = "hello"
 
'нужно как-то так'
oIE.Document.getElementByID("query").Value = "h"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = "he"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = "hel"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = "hell"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = "hello"
0
Dmitrii
26.01.2015, 20:53
  #5

Не по теме:

Цитата Сообщение от cyber542 Посмотреть сообщение
... возможно ли как-то использовать .document.DetElementById...
Я не пишу сценариев для WEB-страниц.

0
cyber542
3 / 0 / 0
Регистрация: 22.01.2015
Сообщений: 7
27.01.2015, 13:42  [ТС] 6
Не, такой вариант не подходит. Пробовал как-то так:
Visual Basic
1
oIE.Document.getElementByID("query").Value = "h" +"e" +"l" +"l" +"o"
Текст вписался без ошибок. Но не понимаю как добавить Wscript.Sleep в таком виде.
0
buggydancer
250 / 238 / 16
Регистрация: 31.12.2009
Сообщений: 324
27.01.2015, 14:31 7
cyber542, а так?
Visual Basic
1
2
3
4
5
6
7
8
9
oIE.Document.getElementByID("query").Value = "h"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = oIE.Document.getElementByID("query").Value + "e"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = oIE.Document.getElementByID("query").Value + "l"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = oIE.Document.getElementByID("query").Value + "l"
WScript.Sleep 333
oIE.Document.getElementByID("query").Value = oIE.Document.getElementByID("query").Value + "o"
0
27.01.2015, 14:31
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.01.2015, 14:31

Работа в определенном окне
Как сделать чтобы програмка работала с открытым окном независимо от того в...

Нажатие определенных клавиш в определенном окне
Как нажать определенные клавиши в определенное окно (программу даже если она...

Имитация нажатия кнопкой мыши в определенном окне внешней программы
Нужна помощь вот в каков вопросе: как с имитировать нажатие мышкой в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru