Если я правильно читаю ваш вопрос, похоже, вы хотите написать консольное приложение (без графического интерфейса), которое будет выполнять снимок экрана. Если это так, просто снимок экрана Google, и вы найдете все виды примеров кода, каждый из которых выполняет почти одинаковые шаги, используйте GetDC (0), чтобы получить HDC рабочего стола, затем используйте BitBlt для копирования с него источник DC в DC создаваемого вами растрового изображения, а затем запишите свое растровое изображение на диск. Обратите внимание, что делать это в консольном приложении просто, делать это из службы NT нельзя. Кроме того, клиентская область некоторых приложений (видео, OpenGL и т. Д.) Не будет захвачена без какой-либо дополнительной работы, которая становится очень волосатой.
Альтернативный метод состоит в том, чтобы ваше приложение использовало функцию API SendKeys для имитации Shift + PrintScreen, затем извлекало буфер обмена и записывал его в файл.
Если вы используете C, используйте этот код вместо SendKeys.
// Simulate press of "Shift+PrintScrn"...
keybd_event(VK_SHIFT, 0, 0, 0);
keybd_event(VK_SNAPSHOT, 0, 0, 0);
// then release...
keybd_event(VK_SHIFT, 0, KEYEVENTF_KEYUP, 0);
keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_KEYUP, 0);