为什么我的应用程序告诉我剪贴板显然是空的,却不是空的?

古柏·约翰逊(Goober S.Johnsson)

我试图用控制台应用程序截取屏幕截图,然后将其保存到桌面,但是出于某种原因。它告诉我剪贴板显然是空的,如果不是,则为空。如果检查代码,您会看到我按PrintScreen,然后将其保存到剪贴板。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace ScreenshotConsole
{
    class Program
    {

        static void Main(string[] args)
        {
            screenshot();
            Console.WriteLine("Printescreened");
            saveScreenshot();
            Console.ReadLine();
        }


        static void screenshot()
        {
            SendKeys.SendWait("{PRTSC}");
        }

        static void saveScreenshot()
        {
            //string path;
            //path = "%AppData%\\Sys32.png"; // collection of paths
            //path = Environment.ExpandEnvironmentVariables(path);

            if (Clipboard.ContainsImage() == true)
            {
                Image image = (Image)Clipboard.GetDataObject().GetData(DataFormats.Bitmap);
                image.Save("image.jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);
            }
            else
            {
                Console.WriteLine("Clipboard empty.");
            }
        }
    }
}
瓦库

截屏需要一些时间,因此您应该在按{PRTSC}以下键后添加延迟

static void screenshot()
{
    SendKeys.SendWait("{PRTSC}");
    Thread.Sleep(500);
}

更新

好的,我想通了,将其添加STAThreadAttribute到您的主要方法中:

    [STAThread]
    static void Main(string[] args)
    {
        screenshot();
        Console.WriteLine("Printescreened");
        saveScreenshot();
        Console.ReadLine();
    }

MSDN说:

Clipboard类只能在设置为单线程单元(STA)模式的线程中使用。要使用此类,请确保您的Main方法已标记为STAThreadAttribute属性。

更多详情

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我的应用程序会花费其生命的24%进行空检查?

为什么IntelliJ告诉我在这种情况下引用不能为空?

当我从剪贴板粘贴到外部程序时,为什么Qt程序会处理剪贴板数据?

当我告诉我不是正则表达式时,为什么这么贪婪?

puppeteer:我可以告诉我是否使用pupeteer浏览了我的网站/应用程序吗?

为什么我不能粘贴复制到剪贴板的格式化文本?

谁能告诉我为什么我的过滤数组为空?

程序不断告诉我我写的数字不是整数

有人可以告诉我为什么我按cam按钮时我的应用程序崩溃吗

为什么React告诉我this.handleClick不是函数?

当它们是相同类型时,为什么编译器会告诉我“应用程序消息的类型不匹配”

ldd告诉我我的应用程序不是“动态可执行文件”

为什么Chrome告诉我有警告消息,却不告诉我它们是什么?

为什么我的Android应用程序销毁后,我的列表数据为空?

Win10截图工具:关闭应用程序后剪贴板为空

当我复制剪贴板并将其粘贴时,为什么我的Autohotkey脚本会添加空行?

如何检查哪些应用程序可以访问我的剪贴板?

为什么我不能从nano复制到剪贴板?

为什么我的 phonegap 应用程序中的导航器对象为空?

为什么终端告诉我我的 .rar 文件不是 RAR 档案?

为什么每次我完全关闭应用程序时我的本地存储(Userdefaults)都是空的(Swift)

为什么即使我在那里安装了应用程序,我的所有 snap 目录都是空的?

使用 apt 安装 kdenlive 两次,然后使用 flatpack、终端和软件应用程序告诉我不同的版本?为什么?

为什么 Flutter 编译器告诉我我的应用不存在?

为什么 QT 告诉我我的 QDialog 继承类不是 QWidget?

谁能告诉我为什么它显示数组为空?

为什么我的 Python PySimpleGUI 窗口不能右键单击,所以我可以从剪贴板粘贴?

有人能告诉我为什么我在执行后得到一个“空”输出吗?

为什么当我点击我的应用程序中告诉我今天是否应该带雨伞的按钮时,我会收到一个致命异常?