Специальный скриншот рабочего стола программно

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

  • Могу ли я сделать снимок рабочего стола без окон на нем?

    • просто фон (изображение) и иконки?
    • просто фон (изображение) и без значков?
    • просто фон без обоев (без значков)

Если бы это было только для меня, я мог бы скрыть или свернуть все окна, но это не только для меня, поэтому я хотел бы найти способ, не будучи недружелюбным пользователем. WinApi является ключевым словом, но остается вопрос, возможно ли это на самом деле.

2 ответа

Решение

С помощью комментария Ch33f это помогает!

// load desktop Wallpaper
// or
BackColor = SystemColors.Desktop;

Я не профессионал в WinApi, но моя идея была бы примерно такой:
Предполагая, что вы уже знаете, как сделать "обычный" снимок экрана с вашим кодом (я не знаю), вы можете попытаться получить все существующие дескрипторы окон и скрыть все окна, сделать снимок экрана и снова отобразить его после этого.
Это, по крайней мере, сделало бы возможным использование значков.

Просто поищите в Google что-то вроде "winapi, повторяющийся через дескрипторы окон" и "winapi hide handle".
Я точно знаю, что есть некоторая функция для сокрытия окна, для которого вы получили дескриптор, и я думаю, что есть способ перебрать существующие дескрипторы.
Возможно, вам придется импортировать эти функции из DLL.

Другие вопросы по тегам