Имя: Пароль:
IT
Админ
WSH не работает SendKeys() под терминалом
0 Allexe
 
18.01.07
13:58
Собственно сабж. Захожу по rdp на комп запускаю скрипт, он начинает выполнятся, выхожу обрывая ссессию, потом захожу снова SendKeys() не выполняется пока окно терминала не активно. В чем трабла?
1 Allexe
 
18.01.07
14:00
Если сворачиваю окно терминала та же хня.
2 mergan
 
18.01.07
14:04
(1)интересно а ты не пробовал без всх управлять спомощью клавиш управлять свернутым окном
3 Allexe
 
18.01.07
14:15
ну скрипт то я запускаю с друго компа на который захожу по rdp. Все остальное будет работать типа копирования, запуска программ, а SendKeys() нет. Вот и вопрос как сделать чтобы работало?
4 mergan
 
18.01.07
14:16
развернуть окошко для начала... сендкей это эмуляция нажатий клавиш на клавиатуре, поэтому и спросил (1)
5 Allexe
 
18.01.07
14:16
Т.е. окно проги которой нужно управлять на другом компе там не свернуто
6 mergan
 
18.01.07
14:18
ну значит фокус не на нем...
7 Allexe
 
18.01.07
14:23
Ладно я понял теряется фокус если свернуть закрыть окно терминала. А как нибудь по другому можно это провернуть?
8 mergan
 
18.01.07
14:32
конечно... любое окно всплывающае во время работы терминала... и фокус на нем...
9 x4
 
18.01.07
14:33
можно без фокуса работать с любым окном, даже в фоновом сеансе типа задач по расписанию и сервисов - на уровне win32api: FindWindow[Ex], GetLastActivePopup, PostMessage( WM_KEYDOWN, WM_KEYUP ), Sleep  и т.д. но это намного более геморно, чем SendKeys. приходится посылать сообщения конкретным окнам, менюшкам и т.д. а для этого их надо нетривиально выщемливать с помощью шпионов. вобщем, можно но сложно. сам ищу готовое решение, т.к. моё слишком сложное. ну а про стабильность - это беда и SendKeys и аналогов. мот когда нить допишу своё решение до анализа того, какой пункт меню сейчас выделен, что написано на неожиданно всплывшем сообщении и сколько в нём каких кнопок. это всё реально, но ге-мор-но.
10 Allexe
 
18.01.07
14:37
А чего нибудь по проще без "фокусов" нету чтобы "тупо" эмулировать нажатия клавиш под терминалом?
11 Allexe
 
18.01.07
14:56
up
12 Allexe
 
18.01.07
15:01
(8) Кстати вот этот вариант отрабатывается нормально скрипт продолжает работать.
Перестает только если свернуть/закрыть(оборвать) окно терминала.
13 Fynjy
 
18.01.07
15:07
Задача так и не описана ...
14 Allexe
 
18.01.07
15:17
(13) Значит все по порядку
1. Захожу по rdp на другой компьютер.
2. Запускаю с него скрипт
2.1. Скрипт запускает программу и эммулирует нажатие клавиш командой SendKeys()

Задача: заставить выполнятся скрипт если сессия оборвана(т.е. не завершение работы пользователя а просто закрыть окно терминала) или окно терминала свернуто в трей.
Проблемы: Если свернуть закрыть окно терминала перестает выполняться команда SendKeys это видно если заново развернуть/зайти в окно терминала.
Найденное корявое решение: минимизировать окно терминала стянув его. При этом если окно терминала находится на заднем фоне(т.е. поверх него другие окна), но при этом не свернуто и не закрыто SendKeys выполняется нормально (только что проверил).
Все таки хотелось бы красивого решения
15 Allexe
 
18.01.07
16:21
up
16 Ковычки
 
18.01.07
16:30
Он и не будет выполняться, для таких задач нече сендкей прикручивать
17 Allexe
 
18.01.07
16:31
(16) Аналогов седкею нет?
18 Ёпрст2
 
18.01.07
16:33
(0) Для чего сендкей используешь? ..
19 Allexe
 
18.01.07
16:41
Запускаю opery и дальше передаю в окно адреса, строки со значениями переменных + "заполнение" форм на открывшихся страницах + открытие/закрытие новых страниц (табов)
20 Ковычки
 
18.01.07
16:44
(19) Афигеть... накуя ?
21 Allexe
 
18.01.07
16:52
(20) Это уже вопрос другой :) Скажем так надо. Суть от этого не меняется.
22 Ковычки
 
18.01.07
17:05
(21) Меняется, еще как...
23 Ковычки
 
18.01.07
17:06
Результат какой нада ? Может тебе качать чего или месаги отправлять, для этого у тебя в системе до и более средств...
24 Allexe
 
18.01.07
17:18
Ну к примеру возьмем этот форум.
Исходные данные:
Мой логин, пароль, id темы, сообщение
Результат: Зайти на форум открыть ветку с темой, вписать логин/пароль сообщение отправить в ветку.
25 Allexe
 
18.01.07
17:39
up
26 Ковычки
 
18.01.07
17:51
(24) Пользуйся нормальными браузерами -
set ie=CreateObject("internetexplorer.application")
user_name="Ковычки"
user_password="Пароль"
ie.navigate("http://www.forum.mista.ru")
ie.visible=true
do while ie.ReadyState<4
WScript.Sleep(100)
loop
set doc=ie.document
doc.getElementById("user_name").value=user_name
doc.getElementById("user_password").value=user_password
set submits=doc.getElementsByTagName("input")
for each c in submits
if c.value="Вход" then
c.click()
end if
next
27 Allexe
 
18.01.07
17:55
(26) Респект а ОЛЕ для Оперы нету?
28 Ковычки
 
18.01.07
17:56
(27) давно ее не юзал, последнюю какую пользовал - 3.6 )) остальные только видел, в ФФ коечто можно придумать, хоть он и не поддерживает ОЛЮ, в опере надо зырить...
Основная теорема систематики: Новые системы плодят новые проблемы.