Windows 10 自动更改剪贴板数据

Windows 10 自动更改剪贴板数据

我遇到了以下情况,我所做的是,

  1. 使用 Ctrl + C 复制网址 ( http://stackoverflow.com/users/123456/user)
  2. 创建一个新的文本文件并单击重命名。
  3. 使用 Ctrl + V 粘贴该 URL 并重命名。
  4. 它出现一个错误,无法将文件名更改为带有 / 和 : .... 的名称。
  5. 它自动删除 / 和 : 并设置文件名。( httpstackoverflow.comusers123456user)
  6. 然后我打开文本文件并再次按 Ctrl + V 将 URL 粘贴到文件中,
  7. 令人惊讶的是剪贴板的值已经改变,如下所示。

http://stackoverflow.com/users/123456/user

httpstackoverflow.comusers123456user

为什么会发生这种情况?有什么想法吗?我正在使用 Windows 10 周年更新。

答案1

是的,我可以重现这种现象。有一个免费剪贴板查看器让你看到发生了什么:

在此处输入图片描述

  • 现在你尝试使用该字符串作为文件名
  • 当错误信息显示时,你会看到剪贴板的内容已更改为“httpstackoverflow.comusers123456user”:

在此处输入图片描述

Windows 资源管理器已做出此更改,它从字符串中删除了“错误”的 ASCII 字符。这里的重点是,我们获取了剪贴板的内容引用(而不是通过价值作为副本),这就是为什么改变是可能的!

[已编辑]

  • 问题:您能否进一步解释一下“按引用而不是按值”?

编程中传递参数的两种方式:按值和按引用。

在此处输入图片描述

当参数通过引用传递时,调用者和被调用者使用相同的变量对于参数。如果被调用者修改了参数变量,则调用者的变量可以看到其效果。

传递参数时按价值调用者和被调用者有两个具有相同值的独立变量. 如果被调用者修改了参数变量,其效果对于调用者来说是不可见的。

Windows 剪贴板可以包含大量内容:图片、文本等等。因此,最好仅复制此内存块的地址而不是复制全部内容。

相关内容