Бот для отслеживания чата в игре. C#

Я хочу отслеживать изменение чата в игре. Есть ли какие-нибудь готовые библеотеки для такого? Я придумал небольшой способ отслеживания чата. Программа создает каждые 15 секунд скриншот экрана. И проверяет на сколько текущий скриншот изменился побитово с другим. Если программа видит, что количество битов изменилось хотя бы на 10-15% то происходит нужная мне функция (допустим выключить игру,если кто-то что-то написал в чат). Но я не уверен хорошо ли так делать. Другая проблема у меня была это "Как удобно выделять область экрана для проверки". Т.е мы запускаем программу. На экране вылетает прямоугольник который можно двигать. Далее перетаскиваем этот прямоугольник на чат и там будут делаться скриншоты экрана. Но я не знаю как реализовать такой "Прямоугольник". Потому что вручную подставлять значения в конструктор класса Bitmap не очень удобно, а хочется просто навести рамку (прямоугольник) на чат и пускай он сам себе скриншотит.


Ответы (1 шт):

Автор решения: SmorcIRL

Для получения скриншота по области можно воспользоваться методом отсюда https://stackoverflow.com/a/5049138/11837368 :

using (Bitmap bmpScreenCapture = new Bitmap(Screen.PrimaryScreen.Bounds.Width, 
                                            Screen.PrimaryScreen.Bounds.Height))
using (Graphics g = Graphics.FromImage(bmpScreenCapture))
{
    g.CopyFromScreen(Screen.PrimaryScreen.Bounds.X,
                     Screen.PrimaryScreen.Bounds.Y,
                     0, 0,
                     bmpScreenCapture.Size,
                     CopyPixelOperation.SourceCopy);
}

Чтобы устанавливать область, можете создать полупрозрачную форму и отслеживать события перемещения и ресайза, получая тем самым границы.

→ Ссылка