2009-03-03 2 views
0

Я ищу что-то для своей системы Win32, которая может находить и реагировать на определенные события экрана. Например, когда диапазон растрового изображения (100,100) на (130,130) моего экрана (часть экрана размером 30 х 30 пикселей) соответствует предоставленной базовой линии 30 х 30 пикселей, выполните определенное действие.Чтение и соответствие критериям соответствия на экране

Можно ли мне начать с этого? Возможно, есть рамки, которые сделают это проще? Или пакет, который я могу использовать? Или даже, возможно, сторонняя утилита?

ответ

1

Вы можете попытаться получить окно рабочего стола (GetDesktopWindow), а затем получить контекст устройства для него (GetWindowDC), а затем создать совместимый контекст в памяти устройства (CreateCompatibleDC), создать совместимый точечный рисунок с рабочим столом постоянного тока (CreateCompatibleBitmap) , выберите его в DC-памяти в памяти (SelectObject), а затем выполните бит-бланширование для интересующей вас области с рабочего стола dc в DC-память (BitBlt). Не забудьте очистить после всего этого.

О, и если вы делаете это в управляемом коде, вы можете найти все эти API на PInvoke.net. Вам также понадобится использовать Imaging.CreateBitmapSourceFromHBitmap, чтобы скопировать растровое изображение из родного растрового изображения в управляемое растровое изображение.

Я пишу все это из памяти; он работал на XP, но я не пробовал его на Vista или Win7.

EDIT: Быстрый поиск в Интернете для «.Net захвата экрана» возвращает пару хитов, в том числе this one с примерами кода в C# и VB.Net.

+0

Есть несколько примеров? Это было бы на XP, так что было бы идеально, если бы я мог видеть это в действии, возможно, какой-то демо-код. Я бы использовал управляемый код. – Ray

+0

Ум, извините, у меня нет рабочего кода прямо сейчас. Кроме того, вышесказанное должно давать только растровое изображение экрана; вам придется иметь дело с анализом. –

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