Универсальный метод скриншота окна

179
11 апреля 2018, 06:58

Нашел здесь отличное решения для создания скриншотов по дескриптору окна. Я его немного подредактировал под свои нужды, получилось следующее:

using (var image = new Bitmap(rect.Right - rect.Left, rect.Bottom - rect.Top))
{
    using (var graphics = Graphics.FromImage(image))
    {
        var hdcBitmap = graphics.GetHdc();
        WinAPI.PrintWindow(Handle, hdcBitmap, 0);
        graphics.ReleaseHdc(hdcBitmap);
    }
    bmp = new Bitmap(image);
}

WinAPI - просто класс-обертка extern функций. Но, если я не ошибаюсь, контролы тоже являются окнами и имеют свой Handle. Этот метод не может сделать снимок контрола. Да, я знаю про DrawToBitmap, но как переписать этот метод, чтобы он работал в обоих случаях, ведь может быть передан дескриптор абсолютно любого окна.

READ ALSO
Как изменить ссылку на сборку?

Как изменить ссылку на сборку?

Пишу бота для дискордаВзял либу Discord

275
Калькулятор на c# [требует правки]

Калькулятор на c# [требует правки]

Разработать программу, вычисляющую арифметические выраженияОсновные операции: сложение, умножение, деление, возведение в степень (^), извлечение...

352
SetWindowText не меняет свойство контрола

SetWindowText не меняет свойство контрола

WinAPI метод SetWindowText не меняет текст кнопкиПричем, если попробовать получить текст через GetWindowText, то вернется, как раз, тот текст, который я пытался...

216