Я пытаюсь сделать снимок экрана моего монитора после нажатия Экран печати button. С приведенным ниже кодом я пытаюсь проверить, есть ли какое-либо содержимое в буфере обмена. Если это так, я пытаюсь сохранить его в папке c:\
. Но Clipboard.ContainsImage()
всегда возвращает 0, но когда я вставляю в Paint, появляется изображение.Буфер обмена всегда null
Я где-то читал, что это можно сделать с делегатами. Пожалуйста, дайте мне знать, как это сделать.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Drawing.Imaging;
namespace Example2
{
class Program
{
static void Main(string[] args)
{
if (Clipboard.ContainsImage())
{
//System.Drawing.Image screenshot = new System.Drawing.Image();
Image screenshot = Clipboard.GetImage();
screenshot.Save("c:\\screenshot.jpg");
}
Console.ReadLine();
}
}
}
Если программирование уже запущен, прежде чем нажать PrntScrn Чем она никогда не сможет захватить содержимое буфера обмена, так как метод был уже уволен, прежде чем буфер обмена имел какие-либо данные. Если вы открываете программу после этого, она должна иметь возможность извлекать содержимое буфера обмена, пока буфер обмена еще не очищен. Поэтому объясните нам, когда именно вы пытаетесь получить данные буфера обмена (например, до или после запуска программы.) – woutervs
Работает ли это, если вы добавили [STAThread] перед вашим основным методом (см. Https://stackoverflow.com/questions/13571426/how-can-i-copy-a-string-to-clipboard-in-my-console-app-without-add-a-refe) – sgmoore
@woutervs: я запускаю программу только после нажатия кнопки PrntScrn –