我在白天管理和组织了许多文件,SendTo是我在Windows上使用最常用的功能.
默认情况下,当用户单击上下文菜单的项目/链接以发送文件时,操作系统不会显示任何类型的通知/通知程序,指示文件正在复制到所选目标.
我认为这是一个非常错误的设计问题,因为对于大文件,它可以......显示进度条,但如果文件很小,它将不会显示任何进度条/可视指示器,因此无法确保文件被复制(没有手动操作)因为我是人类,我可以通过错误点击SendTo上下文菜单外部.
因此,我想开发一个个人迷你工具,当我使用上下文菜单中的SendTo功能发送/复制文件时,只有SendTo功能,这将帮助我优化我的时间向我显示通知窗口.
简单来说,我想从SendTo菜单中检测复制/发送操作,以确保点击在菜单项上正确完成(而不是在菜单外),同时提供其他基本信息,如源文件夹,目标文件夹,以及文件或文件路径的数量.
是否有任何想法开始朝着正确的方向开发这个工具?
我将非常感谢C#或VB.Net中的代码示例,最好是最后一个.
由于我不知道如何开始这样做,我的意思是哪种拦截SendTo调用是最容易或最有效的方式,首先我想挂钩CopyFile或CopyFileEx API函数,但它们不提供我需要的信息因为该函数将在任何类型的复制操作中调用,而不仅仅是在我使用SendTo功能时,所以我迷路了.
我不确定我是否应该调查更多有关内部调用的内容,或者可能会更多地调查windows contextmenu本身,而不是弄乱我可以避免的函数钩子和丑陋的东西.
我的主要想法是开发一个隐藏的WinForms(或者是一个Windows服务),当我使用SendTo功能时(当我点击SendTo菜单的一个项目时)在后台等待,然后显示任何类型的可视指示器.屏幕,以确保我正确地点击该菜单项,并可能告知我正在移动的文件数量以及我正在移动它们的位置.
这是一个代码示例,我认为它演示了如何实例化SendTo com对象来创建自己的?,但是它是用c ++编写的,我不确定该示例是否有用,因为我的目的不是替换SendTo菜单而是我会在这里保留这个有用的信息它为其他东西提供服务:
如何在命名空间扩展中添加(启用)标准"发送到"上下文菜单选项
该KNOWNFOLDERID常数文档提供了有关一些有用的信息的SendTo文件夹中,我再次不知道这也许可以帮助读/访问监测方法?我只是不停的信息在这里:
GUID:{8983036C-27C0-404B-8F08-102D10DCFD74}
默认路径:%APPDATA%\ Microsoft\Windows\SendTo
旧版默认路径:%USERPROFILE%\ SendTo
在Shell扩展处理程序文档中有一个Copy钩子处理程序,我不知道它是否与SendTo的COM组件有关系,如果这可以在某种程度上帮助我,对IContextMenu :: InvokeCommand方法引用同样无知也许我可以拦截它来识别SendTo调用?
到目前为止我觉得自己是盲目的.
我最近发现这是一个托管的"发送到"菜单类,但它又是一个用C/C++编写的例子(我认为之前是相同的源代码),我完全不理解,我不确定这是否有帮助我,因为我重申,取代 …
我已经搜索了web和stackoverflow.
我想将多个文件中的多个文件复制到多个目的地.我还没有使用UnauthorizedAccessExceptions - 这些文件最有可能无法使用.
我可以从这里使用CopyFileEx-Wrapper复制1个文件.但是:我想要出现标准的Windows复制文件对话框.我想复制多个文件 - 而不仅仅是一个 - 例如传递一组源文件和一组目标文件.
有没有办法做到这一点?更多:有没有办法将此作为一个任务排队而不是x分离的复制操作?这样做的原因是我只想显示一个进度对话框 - 从复制所有文件的开始到结束.
我希望我的问题很明确.
非常感谢大家.
divStar.
如何通过调用Windows的“复制文件”对话框来复制文件?
SHFileOperation 似乎是一个选择,但这在我们的流程中。
顺便说一下,SHFileOperation有GUI界面吗?它与Windows复制对话框完全相同吗?
我正在寻找一种方法,使用C#将文件从一个目录移动到另一个目录.我有一个表单应用程序,我希望用户使用文件选择器选择一个文件,并在单击"设置背景"按钮时将文件传输到应用程序中指定的位置.
在尝试@VulgarBinary提供的答案后,我得到以下异常:
System.IO.IOException: Cannot create a file when that file already exists.
Run Code Online (Sandbox Code Playgroud)
