2012-02-23 4 views
1

Я создаю приложение WPF, которое заменит курсор Windows. То, что мне нужно знать, - , если объект, находящийся под моим курсором, можно щелкнуть (я не хочу его прямо сейчас щелкнуть).Получить, если элемент можно щелкнуть или нет

Этот элемент (кнопка, ссылка и т. Д.) Может находиться где угодно в окнах (значок рабочего стола, другое приложение WPF, веб-сайт ...). Я делаю поиск, и кажется, что я могу найти то, что ищу в сборке UIAutomation ... но я понятия не имею, как его использовать.

Моя идея заключается в том, чтобы получить позицию курсора, а затем:

вахты если их предмет под -Смотрите, если этот элемент может быть нажата

Кто есть идея?

Благодаря

+0

Вы хотите сделать это, когда курсор находится над любым элементом управления в любом приложении или только над собственным приложением? Можете ли вы подробнее рассказать о том, как будет использоваться ваше приложение? – BrendanMcK

+0

Я хочу сделать это, когда мой курсор навешивает любое приложение. На самом деле мне нужно, чтобы он работал в одном приложении WPF, но у меня нет доступа к этому приложению. Мое приложение будет использоваться с kinect, у меня уже есть метод, который вы нажмете, то, что мне нужно, - это условие, которое говорят, когда его бросать. Поскольку я не могу добавить какое-либо событие к кнопкам (как onMouseHover), мне нужно добавить к курсору возможность видеть, что он наводил что-то, что можно щелкнуть. – SavaryNicolas

ответ

0

Там нет никакого способа, в общем сказать, если элемент может быть нажата или нет. Но вы могли бы сделать достаточно догадки для своего приложения.

Проблема связана с тем, как работают клики в первую очередь: Windows всегда посылает клик, и решение зависит от того, реагировать на него или нет. Обычно фон формы не отвечает, но некоторые делают. Обычно кнопки будут отвечать; но могут быть и такие, которые этого не делают. И некоторые типы элементов управления могут реагировать по-разному в зависимости от того, где вы нажимаете: если вы нажмете ссылку в текстовом элементе управления, она активирует ссылку; щелкните текст, и он переместит точку ввода.

Итак, лучший выбор - всегда позволять клику посылать - вот как работает мышь.

Но если вы хотите отобразить подсказку, вы можете попробовать использовать UIAutomation, чтобы получить AutomationElement.FromPoint, получить его свойства ControlType и IsEnabled, и если это что-то вроде Button, ListItem, TabItem и т. Д., И это , то это возможно clickable.

Если вам нужно работать только с одним или двумя конкретными приложениями, вы можете составить полный список типов, которые можно кликать или нет для этих приложений, но если вы хотите работать с любым приложением, вам нужно знать, что вы не всегда будете точными, поэтому пользователь должен переопределить и отправить клик в любом случае, даже если вы не показываете правильный индикатор.

Смежные вопросы