Windows 操作系统具有非常方便的拖放功能,这对任何用户来说都是常识,但从技术角度来看,有些开发人员在某个时间点将此功能添加到操作系统中。这是一项很棒的功能,它大大增强了用户体验。这是一张图片,供参考。
我想知道的是这个功能在“幕后”是如何工作的?我在网上找到了一些文章来解释它的行为,例如从网络位置拖动文件将复制文件而不是移动它,但这不是我想要的解释。
我正在寻找关于它的功能的更技术性的解释。如果我右键单击文件,选择“剪切”,然后右键单击另一个目录并选择“粘贴” - 对我这个用户来说,这似乎与拖放的一般过程相同,我只是没有使用便利功能。但从技术角度来看,这是正在发生的正确操作吗?当我拖动文件并且 Windows 将其从一个目录移动到另一个目录时,它是否确实对源文件执行剪切操作,将文件复制到目标,并对源文件执行删除操作?也许在过程中的某个时刻也有一个验证步骤。我会假设在移动之前将整个文件写入内存,或者在移动文件时将文件的片段写入内存。
我很想了解任何人提供的有关拖放功能(如果有人知道的话,详细到 dll 函数)的所有技术和“幕后”信息,以及它与剪切和粘贴等移动文件的其他方法相比如何。
答案1
仅供参考:我的信息可能已经过时了,因为我已经过时了。
拖放操作在后台使用 COM 对象。COM 是一个很麻烦的世界,但它基本上允许不同的应用程序相互通信。拖放时,您会创建一条消息,该消息会发送到目标应用程序。
这个问题的解决方案不止一个(比如文件对象与非文件对象)。我假设 Windows Store Apps 有一个现代的非 COM 实现。
我建议您首先浏览一下 COM 是什么:
https://en.wikipedia.org/wiki/Component_Object_Model
然后看看这个来满足你的好奇心:
https://www.codeproject.com/Articles/840/How-to-Implement-Drag-and-Drop-Between-Your-Progra