Управление C # в расположении мыши вне приложения - PullRequest
1 голос
/ 28 октября 2010

Можно ли получить элемент управления в текущем местоположении мыши, если он находится в окне, неизвестном приложению? (не в Application.OpenForms)

Я реализовал низкоуровневый хук мыши, который может определить местоположение мыши в любом месте экрана, но я не могу получить доступ к элементам управления вне моего приложения. То, что я хочу сделать, это получить кнопку в OpenFileDialog. Я могу получить дескриптор диалогового окна, но не могу получить элемент управления из диалогового окна, используя Control.FromHandle(), поскольку это работает только для элементов управления, которые находятся в приложении.

Ответы [ 2 ]

0 голосов
/ 28 октября 2010

Это возможно с Win32 API. Вам нужен GetDlgItem (), чтобы получить указатель на кнопку, которую вы ищете. Используйте Spy ++, чтобы найти идентификатор элемента управления. Пример кода, который вам нужен, доступен в моем сообщении в этой теме . Этот пример предназначен для внутрипроцессного диалога, он также будет работать вне процесса.

Помните, что ваш код может сломаться в следующей версии Windows.

0 голосов
/ 28 октября 2010

Если вы пытаетесь получить .NET Control, это невозможно.Причина этого в том, что Control IS HWND"HWND" здесь я имею в виду фактический элемент окна Windows.Например, невозможно автоматически обернуть новый экземпляр элемента управления вокруг существующего окна, тем более, что можно получить экземпляр Control из другого приложения .NET, если оно будет одним.

Если выпытаясь вставить .NET Control в OpenFileDialog, это также будет невозможно, поскольку OpenFileDialog не является формой .NET.

Если вы действительно хотите HWND от мышиместоположение, вы можете использовать pinvoke, чтобы получить его с помощью функции WindowFromPoint.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...