Windows 10 自动更改剪贴板数据

the*_*713 3 windows clipboard

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

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

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

httpstackoverflow.comusers123456user

为什么会这样?有任何想法吗?我正在使用 Windows 10 周年更新。

Leo*_*iro 5

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

在此处输入图片说明

  • 现在您尝试将此字符串用作文件名
  • 在显示错误消息的那一刻,您会看到剪贴板的内容已更改为“httpstackoverflow.comusers123456user”:

在此处输入图片说明

此更改已由 Windows 资源管理器进行,该更改从字符串中删除了“错误”的 ASCII 字符。这里的重点是,我们通过引用(而不是作为副本的值)获取剪贴板的内容,这就是可以更改的原因!

[编辑]

  • 问题:你能解释一下“按引用而不是按值”吗?

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

在此处输入图片说明

当通过引用传递参数时,调用者和被调用者对参数使用相同的变量。如果被调用者修改了参数变量,效果对调用者的变量是可见的。

当参数按值传递时,调用者和被调用者有两个具有相同值的独立变量。如果被调用者修改了参数变量,调用者是看不到效果的。

windows剪贴板可以有大量的内容:图片、文字等。这就是为什么最好只复制这个内存块的地址而不是复制整个内容。