WSH не работает SendKeys() под терминалом #248407


#0 by Allexe
Собственно сабж. Захожу по rdp на комп запускаю скрипт, он начинает выполнятся, выхожу обрывая ссессию, потом захожу снова SendKeys не выполняется пока окно терминала не активно. В чем трабла?
#1 by Allexe
Если сворачиваю окно терминала та же хня.
#2 by mergan
интересно а ты не пробовал без всх управлять спомощью клавиш управлять свернутым окном
#3 by Allexe
ну скрипт то я запускаю с друго компа на который захожу по rdp. Все остальное будет работать типа копирования, запуска программ, а SendKeys нет. Вот и вопрос как сделать чтобы работало?
#4 by mergan
развернуть окошко для начала... сендкей это эмуляция нажатий клавиш на клавиатуре, поэтому и спросил
#5 by Allexe
Т.е. окно проги которой нужно управлять на другом компе там не свернуто
#6 by mergan
ну значит фокус не на нем...
#7 by Allexe
Ладно я понял теряется фокус если свернуть закрыть окно терминала. А как нибудь по другому можно это провернуть?
#8 by mergan
конечно... любое окно всплывающае во время работы терминала... и фокус на нем...
#9 by x4
можно без фокуса работать с любым окном, даже в фоновом сеансе типа задач по расписанию и сервисов - на уровне win32api: FindWindow[Ex], GetLastActivePopup, PostMessage( WM_KEYDOWN, WM_KEYUP ), Sleep  и т.д. но это намного более геморно, чем SendKeys. приходится посылать сообщения конкретным окнам, менюшкам и т.д. а для этого их надо нетривиально выщемливать с помощью шпионов. вобщем, можно но сложно. сам ищу готовое решение, т.к. моё слишком сложное. ну а про стабильность - это беда и SendKeys и аналогов. мот когда нить допишу своё решение до анализа того, какой пункт меню сейчас выделен, что написано на неожиданно всплывшем сообщении и сколько в нём каких кнопок. это всё реально, но ге-мор-но.
#10 by Allexe
А чего нибудь по проще без "фокусов" нету чтобы "тупо" эмулировать нажатия клавиш под терминалом?
#11 by Allexe
up
#12 by Allexe
Кстати вот этот вариант отрабатывается нормально скрипт продолжает работать. Перестает только если свернуть/закрыть(оборвать) окно терминала.
#13 by Fynjy
Задача так и не описана ...
#14 by Allexe
Значит все по порядку 1. Захожу по rdp на другой компьютер. 2. Запускаю с него скрипт 2.1. Скрипт запускает программу и эммулирует нажатие клавиш командой SendKeys Задача: заставить выполнятся скрипт если сессия оборвана(т.е. не завершение работы пользователя а просто закрыть окно терминала) или окно терминала свернуто в трей. Проблемы: Если свернуть закрыть окно терминала перестает выполняться команда SendKeys это видно если заново развернуть/зайти в окно терминала. Найденное корявое решение: минимизировать окно терминала стянув его. При этом если окно терминала находится на заднем фоне(т.е. поверх него другие окна), но при этом не свернуто и не закрыто SendKeys выполняется нормально (только что проверил). Все таки хотелось бы красивого решения
#15 by Allexe
up
#16 by Ковычки
Он и не будет выполняться, для таких задач нече сендкей прикручивать
#17 by Allexe
Аналогов седкею нет?
#18 by Ёпрст2
Для чего сендкей используешь? ..
#19 by Allexe
Запускаю opery и дальше передаю в окно адреса, строки со значениями переменных + "заполнение" форм на открывшихся страницах + открытие/закрытие новых страниц (табов)
#20 by Ковычки
Афигеть... накуя ?
#21 by Allexe
Это уже вопрос другой :) Скажем так надо. Суть от этого не меняется.
#22 by Ковычки
Меняется, еще как...
#23 by Ковычки
Результат какой нада ? Может тебе качать чего или месаги отправлять, для этого у тебя в системе до и более средств...
#24 by Allexe
Ну к примеру возьмем этот форум. Исходные данные: Мой логин, пароль, id темы, сообщение Результат: Зайти на форум открыть ветку с темой, вписать логин/пароль сообщение отправить в ветку.
#25 by Allexe
up
#26 by Ковычки
Пользуйся нормальными браузерами - 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 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 by Allexe
Респект а ОЛЕ для Оперы нету?
#28 by Ковычки
давно ее не юзал, последнюю какую пользовал - 3.6 )) остальные только видел, в ФФ коечто можно придумать, хоть он и не поддерживает ОЛЮ, в опере надо зырить...
Тэги: Админ
Ответить:
Комментарии доступны только авторизированным пользователям