从Outlook窗口拖放到.Net中的Application.EXE文件(或图标)

本文关键字:文件 EXE 图标 Application 中的 窗口 Outlook 拖放 Net | 更新日期: 2023-09-27 18:27:00

以前有人问过这个问题,但用我看到的方法,我无法得到我想要的结果。目前,我有一个Windows窗体,如果我运行.EXE(并打开窗体本身),我可以将outlook中的电子邮件放入其中,没有问题。但是,当用户将邮件直接从Outlook拖到.EXE文件上的图标时,我想要的是具有此功能。如果我在本地保存文件并将其放在图标上,我可以做到这一点,但直接从Outlook中,我会得到一个带直线的圆圈。我需要在应用程序上设置一个属性才能实现这一点吗。我用这段代码让将消息放到表单窗口上的操作开始了。

http://www.codeproject.com/Articles/28209/Outlook-Drag-and-Drop-in-C

这是我写的代码,它会掉到图标上。

 static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        var form = new Form1();
        if (args.Length > 0)
        {
            form.ProcessCommandLine(args[0]);
        }
        Application.Run(form);
    }
}
 public void ProcessCommandLine(string commandLine)
    {
        lstFiles.Items.Clear();
        var fileAttributes = File.GetAttributes(commandLine);
        if (fileAttributes.HasFlag(FileAttributes.Directory))
        {
            ProcessDirectory(commandLine);
        }
        else
        {
            ProcessFile(commandLine);
        }
    }

任何帮助都将不胜感激,谢谢。

从Outlook窗口拖放到.Net中的Application.EXE文件(或图标)

您希望创建一个Shell Drop Handler。正如您所发现的,.EXE文件的默认丢弃处理程序接受任何文件作为可丢弃项,并自动启动带有已丢弃文件路径的应用程序。Windows资源管理器不直接支持其他项目,例如直接从Outlook拖动的邮件或日历对象。Windows附带的拖放处理程序的一个示例是,如果您将文件拖到ZIP文件上,它会在您拖放时自动将该文件添加到ZIP存档中。

如果您仍然想创建自己的放置处理程序,则可以在任何文件(如程序的图标、快捷方式等)上放置任何已放置项目时执行任何自定义操作。这不是一项简单的任务,通常不建议使用托管代码(C#或VB)编写shell扩展。(请参见:http://blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx)

一旦你创建了你的投递处理程序,这是一个分两步的过程:

  1. 在程序安装过程中,请在桌面上创建一个具有唯一文件扩展名的文件(如.myprogdroptarget)
  2. 为.myprogdroptarget注册放置处理程序,使此图标成为对象的"神奇"放置目标

有关如何在ATL/C++中创建Drop Handler的一些示例代码,请查看Microsoft All-in-One代码框架,特别是类ATLShellExtDragAndDropHandler.cpp

替代解决方案:

考虑创建一个执行类似功能的Windows桌面小工具。编码应该更简单,因为您不必深入研究C++。曾经有一个名为"魔术文件夹"的Vista小工具,它接受项目作为投递目标,但我在Windows库中再也找不到它了。以下是一篇描述其工作原理的文章:

http://www.howtogeek.com/howto/windows-vista/keep-your-vista-desktop-clean-with-the-magic-folder/

这里有一个作者的链接(如果你问得好的话,也许他会分享源代码):http://davecra.wordpress.com/