gpt4 book ai didi

.net - 从 .NET 应用程序拖动到 Windows 资源管理器时强制放置为快捷方式对象

转载 作者:可可西里 更新时间:2023-11-01 12:05:32 26 4
gpt4 key购买 nike

我正在编写一个 .NET 应用程序,它以与 Windows 资源管理器相同的方式呈现对象的树/ ListView 。这些是基于文本的项目,用户可以将其视为文件,我希望用户能够为它们创建快捷方式,就像他们为任何文件创建快捷方式一样。除了在这种情况下,快捷方式将是使用特定命令行而不是文件对象到我的应用程序。所以我需要支持拖放到 Internet Explorer 中,这样拖动图标看起来像 Alt-drag(创建快捷方式)图标,并且拖放操作使用自定义命令行为我的应用程序创建快捷方式。

我的问题:我需要在拖动操作开始时向 Windows 提供什么信息,以便 Windows 资源管理器显示正确的图标并始终在拖放事件中创建快捷方式?

最佳答案

最简单的方法是 1) 创建快捷方式并 2) 拖动它。我根本没有编写太多托管代码,所以我不能说是否有对 IShellLink 对象的任何内置支持。如果没有,可能有人已经完成了这项工作并构建了一个包装器。所以你可以创建 ShellLink 对象并用你的应用程序、参数等的路径填充它,并将它保存在某个地方(可能是临时文件夹)。然后你会用这样的东西启动拖动操作:

private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
// left mouse button clicked; begin drag
// create data object with FileDrop format (list of files to be dropped)
DataObject data = new DataObject();
System.Collections.Specialized.StringCollection paths = new System.Collections.Specialized.StringCollection();
paths.Add(@"<temp_path>\My New Shortcut.lnk");
data.SetFileDropList(paths);
// begin the drag, indicating it is a copy operation
DragDropEffects effect = DoDragDrop(data, DragDropEffects.Copy);
}
}

然后当用户将其放下(例如在他们的桌面上)时,它将从临时文件夹复制快捷方式文件。

关于.net - 从 .NET 应用程序拖动到 Windows 资源管理器时强制放置为快捷方式对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4991166/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com