Есть ли способ «привязать» к данным окна для всех открытых окон? - PullRequest
1 голос
/ 09 января 2011

Я написал некоторый код взаимодействия, который использует user32.dll для перечисления окон и добавления их в список. WindowData - это локальный класс INotifyPropertyChanged, в котором хранится окно hWnd, заголовок, позиция, размер, путь к исполняемому файлу, значок приложения и т. Д.

Есть ли способ, которым я мог бы эффективно "привязать" к изменениям заголовка окна, положения, размера и т. Д.? Я бы не хотел использовать DispatcherTimer для обновления информации каждую секунду. Я бы предпочел, чтобы я мог использовать простой обработчик событий или обратный вызов или что-то еще.

У кого-нибудь есть идеи?

1 Ответ

0 голосов
/ 09 января 2011

Чтобы эффективно отслеживать данные окон для всех окон без опроса, вы должны зарегистрироваться для уведомления о создании или удалении окон, а затем перехватить все их очереди сообщений и обработать сообщения, которые влияют на данные окон, которые вы пытаетесь отслеживать. К сожалению, это довольно существенная задача. Если вы хотите начать работу, вы можете взглянуть на то, как реализован Spy ++ и так далее. Вот статья:

Посмотрев на это, вы, возможно, должны были пересматривать просто опрашивать время от времени и тщательно обновлять только измененные данные в ObservableCollection.

...