【问题标题】:How do I write to the clipboard to get a “create shortcut” option in windows explorer?如何写入剪贴板以在 Windows 资源管理器中获得“创建快捷方式”选项?
【发布时间】:2011-08-31 20:34:17
【问题描述】:

在剪贴板上放置一个文件下拉列表后 - 在 Windows 资源管理器中单击鼠标右键不会让我选择“创建快捷方式”。我怎么得到它?

谢谢。

【问题讨论】:

  • 如果您询问如何以编程方式创建快捷方式:stackoverflow.com/questions/234231/…
  • @IAbstract 否。我希望能够在剪贴板上放置一个文件下拉列表,然后在 Windows 资源管理器中单击鼠标右键,然后选择“创建快捷方式”。就像我使用 Windows 资源管理器进行了“复制”一样。
  • 你在剪贴板上放了什么?有多少个文件?
  • @David Heffernan 现在 - 一个。

标签: c# clipboard


【解决方案1】:

您需要其他格式,尤其是 OLE 内容。

用我的应用程序(ClipMate)的诊断模式进行实验,我看到当您将文件复制到剪贴板时,然后右键单击 Windows 桌面,会从剪贴板中读取以下格式:

Ole Private Data
DataObject
Preferred DropEffect
HDROP
Shell IDList Array

然后当你实际执行“粘贴快捷方式”时,会拉出一个额外的格式:

Shell Object Offsets

我能够在没有首选 DropEffect 的情况下执行“粘贴快捷方式”,所以我认为这是可选的。我在 Windows XP、SP3 上进行了测试。 YMMV 与其他平台。

【讨论】:

    【解决方案2】:

    这不会像你想要的那样工作。当您在计算机上拖动文件并释放鼠标右键时,不涉及剪贴板。您可以通过打开记事本来测试这一点,写一些文本并复制它,然后通过右键单击在您的计算机上创建一个快捷方式,最后将文本粘贴回记事本。当你这样做时,你会看到文本仍然存在,这意味着没有文件被放置在它“上面”。

    因此,您无法对剪贴板执行任何操作来更改“在此处创建快捷方式”的含义。您可以做的最接近的事情是创建@IAbstract 所说的快捷方式并将该快捷方式复制到剪贴板。您将能够右键单击并粘贴快捷方式。更多内容请看这篇文章Drag & drop of a dynamically created shortcut

    【讨论】:

    • 我假设 ispiro 希望上下文菜单提供“粘贴为快捷方式”
    • @Chris Haas 没有拖拖拉拉。试试这个:右键单击一个文件。点击“复制”。右键单击其他地方。点击“粘贴快捷方式”。
    • 谢谢@ispiro,这很有帮助。有一个令人困惑的“创建快捷方式”命令。我找不到任何人在 .Net 中完全这样做的示例,但下面的帖子概述了 C 中的基础知识。最终,您需要创建一个 CFSTR_SHELLIDLIST 结构并调用 SetData 传递 Shell IDList Array 和您的结构。听起来很简单,但其中涉及到很多工作,不幸的是我没有时间进入,但也许这里的其他人可以。 netez.com/2xExplorer/shellFAQ/adv_drag.html
    猜你喜欢
    • 2016-08-31
    • 2010-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多