![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Здравствуйте! Бьюсь над этой проблемой уже неделю.
Необходимо(ну или по-крайней мере желательно) в одной программулине под Windows автоматизировать последовательность действий, которая будет повторятся очень часто, и для большей дружественности пользователю хотелось бы его, пользователя, от лишней работы избавить. Все действия будут выполнятся с клавиатуры. Таким образом задача разделяется на две части. Первое - эмуляция клавиатуры. С этим я уже разобрался. Второе - нужно синхронизировать Java-программу, которая эмулирует нужную последовательность действий, с программой, в которой эти действия должны быть выполнены. Вот это уже фокус посложнее, я по-крайней мере не знаю как это можно сделать. То есть выглядеть это должно так: обычным образом запускаем нашу программу и как только её окно активизируется, запускается Java-эмулятор и начинает "жать на кнопки", начиная с клавиши alt(чтобы забраться на меню). Только вот как сделать чтобы он запускался. Вообще вопрос скорее по форточкам, чем по Java. Я задал вопрос в соответствующем разделе, но там что-то безмолвствуют. Так что если считаете, что вопрос к Java ну совсем не имеет отношения, можно ответить здесь. |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Никак. Ручками запускать. Или написать программу которая бы стартовала 2 процесса. Т.е. запускаете её, будто запускаете основную Windows программу, а она, на самом деле, запускает оригинальную программу, а потом java программу. При этом данный загрузчик можно написать на Java, благо возможность есть. |
|||
|
||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
А как вообще запустить стороннюю программу? Пол инета перерыл, но не нашёл.
Понял только, что нужно наследовать класс от класса Thread и переопределить метод run(). А что в методе run писать? |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
тут посмотри.
|
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Всё сделал, огромное спасибо за помощь!
Надо сказать, если ещё сделать sleep между событиями клавы, выглядит очень эффектно, прямо полтергейст какой-то! Но этого я конечно делать не буду, зачем пугать людей. Представте запускаете вы себе какой нибудь ексель, а у вас вдруг начинают сами собой меню выдвигаться, курсор бегает сам по себе. Извиняюсь за оффтопик, конечно, перевозбудился... P.S. Всё таки жаль, что нельзя стартовать с основной программы. |
|||
|
||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Только почему-то Enter не нажимается.
Десятичный код клавиши Enter, если не ошибаюсь 13. События от других клавиш проходят нормально. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Используй константы из KeyEvent: KeyEvent.VK_ENTER, KeyEvent.VK_UP и т.д.
-------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Спасибо, всё нажимается.
Десятичный код Enter видимо не срабатывал просто потому что число такое |
|||
|
||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
Неожиданное продолжение темы
По независящим от меня причинам последовательность действий, которую должен выполнить мой "эмулятор пользователя" изменилась. Появилась необходимость получить фокус ввода или попросту говоря поставить курсор в поле при помощи мыши. Ни Tab, ни какие другие клавиши не позволяют этого сделать. Для того чтобы эмулировать щелчок мышью в поле нужно сначала переместить "мышь" в нужную позицию
Вопрос в том как получить координаты x и y. Я знаю, что в Java есть методы позволяющие получить координаты мыши в момент возникновения события, но события ловятся только если они произошли в окне Java-приложения, а в данном случае это не так. Как получить координаты поля, в которое мне нужно поставить курсор? |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Текущее положение мыши можно получить:
не знаю правда поможет ли. А вообще только OCR -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
||||
|
|||||
| unkis |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 802 Регистрация: 8.9.2004 Репутация: нет Всего: 1 |
извините может это немного не в тему, но существуют же программы для тестов приложения, они как-то отлавливают какие-то windows message, и тем самым могут влиять на приложения.
Я всего этого не знаю а просто где-то слышал. Но если это так, то может можно тоже отловить эти mesage? -------------------- www.unkis.com |
|||
|
||||
| Metal_Heart |
|
|||
|
а почему бы и нет? ![]() ![]() Профиль Группа: Участник Сообщений: 728 Регистрация: 31.3.2005 Где: Москва Репутация: 4 Всего: 12 |
unkis, да, я тоже это краем глаза видел, даже кнопки нажимал виртуально
check, ты лучше к Сишникам сходи, они тебя научат как с виндовой формой обращаться -------------------- не стыдно учиться, а стыдно не учиться |
|||
|
||||
| Alexandr87 |
|
|||
![]() дыкий псых ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1459 Регистрация: 27.11.2004 Где: Алматы, Казахстан Репутация: 9 Всего: 39 |
Вощем, вам нужно в раздел c-winapi.
Есть ли смысл делать это на Java? По-любой для фокуса с определением координат контрола нужно испольозовать winapi функции, следоавтельно писать библиотеку и jni к ней, может стоит всеж обойтись средствами winpi. |
|||
|
||||
| check |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 610 Регистрация: 3.4.2006 Репутация: 2 Всего: 23 |
||||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |