从剪贴板中编程粘贴文件:复制还是移动?

4

我正在尝试制作一个WPF应用程序,它可以复制/剪切和粘贴文件信息,并将其复制/移动到特定文件夹。我知道可以使用

System.Windows.Clipboard.GetFileDropList()

获取被复制/剪切的文件路径。

var files = Clipboard.GetFileDropList();

但我想知道,我需要复制还是移动文件?我读到过关于监听 WM_COPY 和 WM_CUT 的内容。我尝试通过将 Hwnd 钩子挂接到我的窗口句柄来实现,但它没有起作用,WM_COPY 和 WM_CUT 都没有被调用。我已经尝试了所有方法。

那么,最好的方法是如何确定文件是复制还是剪切的? 一些代码示例或链接将非常有帮助。

谢谢。


你确切指的是哪个单词代替"whther"?带有那个单词的句子没有意义。 - Security Hound
请重新考虑您的问题陈述,明确表达您遇到的问题或您真正想要实现的目标。谢谢。同时,也可以考虑重新措辞您的问题。 - MethodMan
@Jonathan Henson 不是的。我希望源可以是任何允许复制文件的应用程序。 - Metod Medja
1
那么你将无法安装钩子。我从经验中知道。Windows只允许从.NET挂接左键和右键。如果您必须采取这种方法来捕获钩子,则必须创建win32 dll,然后在您的.NET代码中调用它。 - Jonathan Henson
如果您想知道剪贴板中的文件是复制还是移动,请查看以下文章: http://www.codeproject.com/Articles/32670/Getting-the-Clipboard-File-DropEffect-in-VB-NET - Mike
显示剩余6条评论
2个回答

2

我认为这不是他所要求的。他想要捕获来自应用程序外部的所有副本和剪切板操作。 - Jonathan Henson
看他回复我的时候,可以在评论中找到我问他这个问题的地方。 - Jonathan Henson
这真的有效!我必须立即尝试它。它完美地运行。 - Metod Medja
@JonathanHenson 我认为他正在寻找钩子作为一种工具来确定是剪切还是复制。要查看编辑-单击“42分钟前提问”的左侧的“14分钟前编辑”。 - ispiro
谢谢,我只是误解了整件事情。 - Jonathan Henson

1

你将无法安装钩子。我有经验知道。Windows只允许从.NET挂接左右点击。如果你必须采取这种方法,你将不得不创建一个win32 dll,然后在你的.NET代码中调用它来捕获钩子。

或者,尽管这个应用程序听起来很简单,但仍可以使用C或C++中的API编写它。

如果这只是你的应用程序中的一个小功能而不是整个应用程序,那么你要么必须找到一种方式来执行注入并将其传递给你的.NET应用程序,要么就必须找到一种不涉及钩子的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接