如何写入剪贴板以在Windows资源管理器中获取“创建快捷方式”选项?

问题描述:

把文件夹放到剪贴板后 - 在Windows资源管理器中右键单击不会让我选择“创建快捷方式”。我如何获得?如何写入剪贴板以在Windows资源管理器中获取“创建快捷方式”选项?

谢谢。

+0

如果你问如何以编程方式创建一个快捷方式:http://*.com/questions/234231/creating-application-shortcut-in-a-directory/234543#234543 – IAbstract

+0

@IAbstract No.我想成为能够在剪贴板上放置一个文件列表,然后在Windows资源管理器中右键单击,并获得“创建快捷方式”的选项。就好像我使用Windows资源管理器进行“复制”一样。 – ispiro

+0

你在剪贴板上放什么?多少个文件? –

你需要其他格式,特别是OLE的东西。

与我的应用程序(ClipMate)的诊断模式进行实验,我看到,当你复制文件到剪贴板,在Windows桌面上右键单击,下面的格式从剪贴板中读取:

Ole Private Data 
DataObject 
Preferred DropEffect 
HDROP 
Shell IDList Array 

然后当你真正执行“粘贴快捷方式”,附加格式被拉:

Shell Object Offsets 

我能不首选DROPEFFECT执行“粘贴快捷方式”,所以我认为这是可选的。我在Windows XP,SP3上测试过。 YMMV与其他平台。

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

所以没有什么可以做到的剪贴板来改变“创建快捷方式在这里”的含义。你可以做的最接近的事情是创建一个快捷方式,@IAbstract说,并将该快捷方式复制到剪贴板。您将能够右键单击并粘贴快捷方式。看到这篇文章更多Drag & drop of a dynamically created shortcut

+0

我假设ispiro希望上下文菜单提供“粘贴为快捷方式” –

+0

@Chris Haas不做拖动。试试这个:右键点击一个文件。点击“复制”。右键点击其他地方。点击“粘贴快捷方式”。 – ispiro

+0

谢谢@ispiro,这有帮助。有一个令人困惑的“创建快捷方式”命令。我找不到任何人在.Net中完全做到这一点,但下面的文章概括了C中的基础知识。最终,您需要创建一个'CFSTR_SHELLIDLIST'结构并调用'SetData'传递'Shell IDList Array'和您的结构。听起来很简单,但涉及很多工作,我不幸没有时间进入,但也许有人在这里。 http://netez.com/2xExplorer/shellFAQ/adv_drag.html –