【问题标题】:How is copy paste possible?复制粘贴怎么可能?
【发布时间】:2019-03-24 01:24:54
【问题描述】:

我在使用电脑很长时间后想知道复制粘贴是基本功能,但我知道不是。所以问题是这到底是如何工作的?

我想到了如何实现这一点的所有想法,但每次我想出不同的文件格式(如 gif、jpg、txt、png、mp3、mp4、JSON、YML 等)时,我都会陷入困境。去复杂的地方,比如快捷方式,链接,然后是目录。就像它如何在 chrome 中复制搜索结果中的图像,而有时由于限制您无法复制某些内容,您也无法选择某些内容然后您无法复制它,而有时即使您无法在层次结构中选择孩子们被复制了,所以它是如何实现的。

但是当有人问我复制粘贴一般是如何工作时,我的回答是:当复制某些内容时,它会将复制的项目放入内存中,当将其粘贴到某个位置时,操作系统会找出它应该在的位置复制并将所有文件复制到二进制文件并复制它。

这可能不是真的,所以你能解释一下它是如何工作的。了解复制粘贴的代码是如何编写的也会很有帮助。

【问题讨论】:

  • 技术细节特定于操作系统和/或窗口系统。您想要某个特定环境的答案吗?
  • 在更多我想要它是如何完成的一般解决方案。但我不介意细节是否与特定环境有关。
  • Start here at MSDN,它讨论了 Windows 剪贴板实现背后的概念。我们不能替代您自己的研究。

标签: operating-system system copy-paste file-copying copying


【解决方案1】:

您需要意识到的第一件事是“复制和粘贴”以及“拖放”是 IPC(进程间通信)的一种形式,因为数据正在从一个应用程序传输到另一个应用程序。这种机制通常由负责管理图形用户界面的同一子系统或服务提供。

此子系统为“源”和“目标”应用程序提供了一种机制,用于协商应传输的数据格式,如果它们“同意”某种通用格式,则可以传输数据。

一个例子来说明这个概念:

  1. 用户在网络浏览器中选择文本并按 Ctrl+C。
  2. 浏览器告诉窗口系统它有一些数据可用于复制。 请注意,此步骤不会复制任何数据。
  3. 用户打开文本编辑器并按 Ctrl+V。
  4. 文本编辑器告诉窗口系统向它提供剪贴板上的内容纯文本格式
  5. 窗口系统告诉浏览器以纯文本格式提供其共享数据。
  6. 浏览器将其数据从 HTML(或其他) 转换为 纯文本,并通过窗口系统将其传输到文本编辑器。 请注意,这种转换并非总是可行的(取决于格式和应用程序),因此您有时无法粘贴复制的数据。

技术细节

  • 在 Windows 上,此功能通过 Clipboard API 提供,正如 Ken White 所述。
  • 在 Linux(可能还有其他任何地方)上,剪贴板功能严格来说并不是操作系统的一部分,而是由窗口服务器/管理器(实际上只是一个服务进程)通过窗口系统协议(例如 @987654322)提供@ 或 Wayland

【讨论】:

  • "2 [...] 请注意,在此步骤中不会复制任何数据。"如果关闭源应用程序会怎样?也许也卸载它?那你就不能再粘贴了吗?
  • @sesquipedalias,我认为这在很大程度上取决于您的系统,您实际上可以在您的系统上检查它,但至少在我的带有 X 窗口系统的 Linux 上,我无法从已经关闭的应用程序中粘贴任何内容.
  • 有趣!在 Windoze 上,你可以做到...剪贴板是它自己的应用程序并存储复制的“文档”
猜你喜欢
  • 2021-07-25
  • 1970-01-01
  • 1970-01-01
  • 2017-11-10
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 2012-08-31
相关资源
最近更新 更多