我曾尝试自己研究这个问题,但一直找不到答案。我特别感兴趣的是允许这种情况发生的函数序列(如果可能且相关),以及在过程中执行的文件/脚本。例如,有时候是这样的, 然后那个会发生等等,尽可能具体。
另外,如果打印屏幕可以“粘贴”,那么它必须有一个临时文件保存在某个地方,以免被下一个复制的内容覆盖,你能告诉我这个文件的位置吗?而且,它怎么能被粘贴呢?操作系统是否会在将图像保存到某个位置后复制它?
我对有关 Windows 10(当前版本或任何最新版本)的信息特别感兴趣,但如果您有这方面的知识,我也会有兴趣了解它在其他操作系统上的运行方式。
编辑:评论中的一位用户发布了这两个链接来提供编程背景:
https://causeyourestuck.io/2016/01/12/screenshot-c-win32-api/
https://docs.microsoft.com/en-us/windows/uwp/audio-video-camera/screen-capture
如果有人能用简单的英语解释它们是如何工作的,那就太好了;)
答案1
我对允许 [“打印屏幕”功能工作] 的功能序列特别感兴趣。
任何给定的程序(无论是操作系统本身还是第三方应用程序)都可能使用评论中提到的适当的操作系统函数/API 调用。因此,捕获和粘贴屏幕截图的一般步骤如下:
调用适当的函数将包含当前屏幕图像数据的内存复制到剪贴板。
调用适当的函数从剪贴板复制当前数据(屏幕图像)并以适合程序的格式或文件输出。
发生了这个,然后发生了那个等等,尽可能具体。
请注意,引用任何实际使用的“函数”可能无关紧要,因为您调用来管理屏幕截图和/或剪贴板的特定函数对于不同的操作系统和编程语言都是不同的(即使它们执行相同的一般操作)。您可能需要选择一个操作系统和语言才能使其有意义。
如果打印屏幕能够被“粘贴”,那么它必须有一个临时文件来保存它,以免被下一个复制的内容覆盖[。]
您所引用的“临时文件”可能未命名,并且仅保存在 RAM 中计算机剪贴板。
打开 Windows 截图工具,随意截取一些内容,不要保存。然后最小化窗口并使用CTRL+截取屏幕截图PrintScreen。现在尝试粘贴该屏幕截图。您不会获得屏幕截图,而是获得“截取”内容的图像,即使您实际上没有复制它。
此行为似乎(可能)特定于截图工具和CTRL+ PrintScreen。 在 Windows 7 下,我可以重现此行为,但在这种情况下使用可以正常工作( +PrintScreen也是如此)。ALTPrintScreen