Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Как узнать координаты нажатия мыши?  (Прочитано 13442 раз)
0 Пользователей и 1 Гость смотрят эту тему.
abdruxa
Интересующийся

ua
Offline Offline

« : 11-01-2014 22:13 » 

Всем привет. Как узнать координаты нажатия мыши по любой точке на экране?
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 11-01-2014 22:19 » new

abdruxa, речь опять о Java SE, или что-то другое?
Записан
abdruxa
Интересующийся

ua
Offline Offline

« Ответ #2 : 12-01-2014 08:06 » 

Вад, Почему сразу опять? На мой вопрос не кто не ответил, все ставят из себя умных, а помочь ни кто не может. Я весь интернет перерыл, нигде не могу найти то что мне нада. Все обработчики связаны с фреймами и панелями.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 12-01-2014 08:15 » 

abdruxa, ну раз "фреймы" и "панели", значит Java SE. А вообще эта задача в Windows через hook решается, в других операционных системах - по своему. Поэтому внутри кроссплатформенной Java для неё нет универсального решения.

Java работает на правах приложения - т.е. отвечает только за свои окна. Кто ж тебя из чужих окон будет сообщения слать?

P.S. Что касается "помочь" и "умные": есть разница между упорством и упрямством.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #4 : 12-01-2014 09:23 » 

abdruxa, потому что - а вдруг что-то другое? Это я, положим, помню, что прошлые вопросы по Java SE были, и, экстраполируя, делаю телепатическое допущение, что ты всё ещё с AWT работаешь.
В общем, формулировать вопрос надо до конца, не полагаясь, что все и так знают, где и что именно ты пытаешься сделать. И, главное, какую задачу решаешь, какого конечного результата хочешь добиться - а то вдруг есть какое-то решение, но оно выходит за рамки твоего первоначального вопроса?

К тому же, неплохо начинать с того, что ты уже попробовал (но не помогло), чтобы, во-первых, твой вопрос не выглядел как "сделайте за меня", во-вторых, не тратить общее время на обсуждение тупиковых решений, а в-третьих, в твоих (как, впрочем, и чьих угодно) нерабочих решениях может быть скрыта ошибка, которую, в противном случае, можно долго искать под пытками, что тоже трата времени. Ну и вообще это дополнительный источник информации о задаче.
« Последнее редактирование: 12-01-2014 09:31 от Вад » Записан
abdruxa
Интересующийся

ua
Offline Offline

« Ответ #5 : 12-01-2014 17:21 » 

Вад, Почему Вы сразу сщитаите что я хочу чтоб за меня чтото ктото сделал? Я просто хочу чтоб мне подсказали ответы на мои вопросы и указали на мои ошибки и что нужно использовать для их устранения. Ведь я пытаюсь изучить язык программирования JAVA сам, и мне не у кого получить ответы на вопросы которые появляються во время изучения.
Я использовал MouseInfo.getPointerInfo().getLocation() но таким образом можна узнать только координаты нажатия мыши только в фрейме.
Dimka сказал что мою проблему можна решить "в Windows через hook" но я про этот hook не чего не знаю, и не могу найти примеров его реализации.
Нашол класс EventHandler. Можна ли с его помощью можна решить мою проблему? То что я нашел http://docs.oracle.com/javase/7/docs/api/java/beans/EventHandler.html
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 12-01-2014 21:16 » 

Цитата: abdruxa
Ведь я пытаюсь изучить язык программирования JAVA
Ну вот тебе и ответили, что твой вопрос в рамках Java смысла не имеет и в компетенцию Java не входит. Помимо Java ещё нужно изучать операционную систему - там твою проблему решить можно. Но ты же и слушать не хочешь, что тебе говорят.

Цитата: abdruxa
я про этот hook не чего не знаю, и не могу найти примеров его реализации.
Во-первых, реализация таких вещей делается на платформозависимом языке программирования или умеющем импортировать вызовы WinAPI. Java к таким языкам не относится. Однако к Java можно прикреплять платформозависимые модули, написанные на других языках. Обычно такие задачи решаются на языке C/C++, а потом полученный модуль "плагинится" к Java.

Во-вторых, полная и исчерпывающая справка по WinAPI содержится в библиотеке и msdn.microsoft.com. Тебе актуальна эта начальная страница, откуда можно перейти и почитать все материалы по теме хуков http://msdn.microsoft.com/en-us/library/windows/desktop/ms632589(v=vs.85).aspx Но чтобы этим воспользоваться, нужно изучать некоторые концепции WinAPI. Для начинающего это тема не очень простая.

В-третьих, класс EventHandler в Java к WinAPI отношения не имеет.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #7 : 12-01-2014 21:35 » 

Вад, Почему Вы сразу сщитаите что я хочу чтоб за меня чтото ктото сделал?
А теперь быстро покажите, где я так считаю. Или извинитесь.
Я сказал, как это выглядит. Это выглядит именно так: своей работы не продемонстрировано. Поставьте себя на место человека, который не читал других ваших тем, а эту пришёл и прочитал - что он о вас из вашего вопроса поймёт? Как сможет вам правильно помочь?

Цитата
Я просто хочу чтоб мне подсказали ответы на мои вопросы и указали на мои ошибки и что нужно использовать для их устранения.
И для этого надо правильно задавать вопросы. А когда я указываю на ошибку в вопросе - вы огрызаетесь, и это не прибавляет вам шансов на получение помощи.

Смотрите, вы решаете какую-то свою задачу (между делом, всё ещё непонятно, какую), и хотите знать, как выполнить конкретное действие. В общем случае, немалый шанс, что никто вот так просто из головы это знание не выложит. Скорее, поделятся какими-то идеями. Поэтому, чтобы найти правильную помощь, нужно ведь своё послание правильно адресовать: чтобы помогающий смог верно сопоставить свою и вашу компетенцию и не давал, с одной стороны, дурацких советов, если знает меньше вас, а с другой, - ему не пришлось бы несколько раз пережёвывать для вас решение, если оно вдруг слишком сложное.

Вот взять меня: новичку в Java SE я, при почти полном отсутствии опыта именно с AWT, помочь могу, потому что примерно представляю, где и как искать ответы на умеренно сложные вопросы. Но человеку, который уже собаку на теме съел, я могу предложить только то, что он уже и без того пробовал, впустую растрачивая его и своё время.

Возвращаясь к теме: EventHandler - это, судя по всему, не то, что нужно. Если бы я начинал искать (а я начал искать) - я бы первым делом наткнулся на MouseListener и MouseInputAdapter (как более удобный для использования). Но в свете слов Димки, не рассчитывал бы, что и это как-то поможет.
В принципе, есть платформозависимые решения для Java (использующие JNI/JNA), если поискать. Вот, например: http://code.google.com/p/jnativehook/ - или вот чисто для Win: http://stackoverflow.com/questions/3590226/working-example-of-jna-mouse-hook/4094882#4094882

Но! Это всё ответы "вслепую", из предположения, что тебя пытают и заставляют именно на Java городить непонятный огород с глобальным перехватом движения мыши. И не факт, что это правильный ответ на вопрос, как решать твою задачу. Может, ты выбрал вообще не тот инструмент - откуда нам знать?
Записан
abdruxa
Интересующийся

ua
Offline Offline

« Ответ #8 : 14-01-2014 21:25 » 

Вад, приймите мои звинения, я был не прав.
Таким образом если я захочу закрыть фрэйм и завершить все процесы при нажатии на клавишу 'Esc', при условии что окно фрейма сейчас не активно то мне прийдеться использовать тот метод про который расказал Dimka?
Цитата
Во-первых, реализация таких вещей делается на платформозависимом языке программирования или умеющем импортировать вызовы WinAPI. Java к таким языкам не относится. Однако к Java можно прикреплять платформозависимые модули, написанные на других языках. Обычно такие задачи решаются на языке C/C++, а потом полученный модуль "плагинится" к Java.
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 15-01-2014 04:33 » 

abdruxa, да. Только есть большая вероятность, что модули для работы с WinAPI уже написаны, и их нужно поискать. На отдельные примеры Вад ссылки давал.
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 15-01-2014 11:43 » 

abdruxa, если фрейм не активен - то что тогда активно? И какие именно процессы надо завершить - запущенные текущим java-приложением, или какие-то другие? Сценарий не совсем понятен. Хочется сделать глобальный хоткей с какими-то действиями?
Записан
abdruxa
Интересующийся

ua
Offline Offline

« Ответ #11 : 15-01-2014 12:24 » 

Вад, Вы меня сразу извините если я по тупому обясняю но я хотел сделать следуещие.
Есть простенькая программа которая выводит фрейм окно на котором расположена всеволиш одна кнопка при нажатии на которую на консоль выводит строку "Start". Когда фрэйм запущен я захожу в любую папку на ПК, то фрейм станет не активным. Можна ли сделать так что когда активна папка можна ли было бы закрыть фрейм при нажатиии на кнопку 'Esc'?
Записан
Dimka
Деятель
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 15-01-2014 13:45 » 

abdruxa, а причём тут мышь?
Записан

Программировать - значит понимать (К. Нюгард)
Невывернутое лучше, чем вправленное (М. Аврелий)
Многие готовы скорее умереть, чем подумать (Б. Рассел)
abdruxa
Интересующийся

ua
Offline Offline

« Ответ #13 : 15-01-2014 15:37 » 

Я говорю что то и то нада решать с помщью этого?
Цитата
Во-первых, реализация таких вещей делается на платформозависимом языке программирования или умеющем импортировать вызовы WinAPI. Java к таким языкам не относится. Однако к Java можно прикреплять платформозависимые модули, написанные на других языках. Обычно такие задачи решаются на языке C/C++, а потом полученный модуль "плагинится" к Java.
Записан
Вад
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 15-01-2014 21:37 » 

abdruxa, ага, кажется, начинаю понимать. Правильно я понимаю, что задумка - сделать приложение, которое работает как робот, выполняя действия, которые ему показали, а потому требуется какой-то режим "записи" действий, и эту запись нужно уметь вести и прерывать (по Esc)? (Это я суммирую все предшествующие вопросы, и это к вышесказанному про контекст).

Поправьте, если не так. Если же так - то да, java не очень удачный инструмент, и придётся прибегать к внешним инструментам - тот же jnativehook, на который я дал ссылку выше, предлагает средства как для отслеживания мыши, так и для клавиатуры. Можно начать оттуда.
Записан
abdruxa
Интересующийся

ua
Offline Offline

« Ответ #15 : 15-01-2014 22:07 » 

Вад,  Вы совершенно правы. Теперь буду начинать учить потоки, нада все до купы собрать.
Всем ОГРОМНАЯ БЛАГОДАРНОСТЬ за помощь.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines