C# 剪贴板始终为空

C# 剪贴板始终为空,c#,clipboard,C#,Clipboard,按下“打印屏幕”按钮后,我正在尝试拍摄显示器的屏幕截图。使用下面的代码,我试图检查剪贴板中是否有任何内容。如果是这样,我将尝试将其保存在c:\文件夹中。但是Clipboard.ContainsImage()总是返回0,但是当我粘贴到绘画中时,会有一个图像 我在某个地方读到,这可以通过代表来完成。请告诉我怎么做 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data

按下“打印屏幕”按钮后,我正在尝试拍摄显示器的屏幕截图。使用下面的代码,我试图检查剪贴板中是否有任何内容。如果是这样,我将尝试将其保存在
c:\
文件夹中。但是
Clipboard.ContainsImage()
总是返回0,但是当我粘贴到绘画中时,会有一个图像

我在某个地方读到,这可以通过代表来完成。请告诉我怎么做

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();
        }
    }
}

问题是您正试图从控制台应用程序访问剪贴板,但如果您想从表单中尝试,这将起作用。 此外,如果设置此属性,还可以使上述代码正常工作

[STAThread()]
static void Main(string[] args)
{
将此作为参考:

问题在于,您试图从控制台应用程序访问剪贴板,但如果您想从表单中尝试,这将起作用。 此外,如果设置此属性,还可以使上述代码正常工作

[STAThread()]
static void Main(string[] args)
{
将此作为参考:

如果程序在您按下PrntScrn之前已经运行,则它永远无法捕获剪贴板内容,因为该方法在剪贴板有任何数据之前就已启动。如果以后打开程序,只要剪贴板尚未清除,它就应该能够检索剪贴板的内容。因此,请解释您何时正试图检索剪贴板数据(例如,在程序启动之前或之后)。如果在主方法之前添加[StatThread]是否有效(请参见)@woutervs:i仅在单击PrntScrn@sgmoore当前位置我检查了这个,但不明白。。我只是一个c语言的初学者,如果程序在你按下PrntScrn之前就已经运行了,那么它永远无法捕获剪贴板内容,因为该方法在剪贴板有任何数据之前就已经启动了。如果以后打开程序,只要剪贴板尚未清除,它就应该能够检索剪贴板的内容。因此,请解释您何时正试图检索剪贴板数据(例如,在程序启动之前或之后)。如果在主方法之前添加[StatThread]是否有效(请参见)@woutervs:i仅在单击PrntScrn@sgmoore当前位置我检查了这个,但不明白。。我只是一个c语言的初学者。在添加了上述更改后,在“screenshot.Save(“c:\\screenshot.jpg”);“您没有指定文件格式,通常microsoft倾向于将所有内容保存为bmp,请将代码更改为=>screenshot.Save(@“c:\screenshot.png”),System.Drawing.Imaging.ImageFormat.JPEG);谢谢大家。最后一个异常是由于C文件夹的权限问题。但是现在我把文件夹改成了“f:/”,它现在可以工作了。在添加上述更改后,在“screenshot.Save(“c:\\screenshot.jpg”);“您没有指定文件格式,通常microsoft倾向于将所有内容保存为bmp,请将代码改成=>screenshot.Save(@“c:\screenshot.png”),System.Drawing.Imaging.ImageFormat.JPEG);谢谢大家。最后一个异常是由于C文件夹的权限问题。但是现在我把文件夹改成了“f:/”并且它现在可以工作了。