从Outlook窗口拖放到.Net中的应用程序.EXE文件(或图标)

时间:2012-03-05 17:20:49

标签: c# winforms drag-and-drop outlook icons

以前曾经问过这个问题,但是凭借我所看到的方法,我无法得到我想要发生的事情。目前,我有一个Windows窗体,如果我运行.EXE(并调出窗体本身),我可以将Outlook中的电子邮件放入其中没问题。但是,我正在寻找的是当用户将消息直接从Outlook丢弃到.EXE文件上的图标时具有此功能。如果我在本地保存文件并将其放到图标上,我可以做得很好,但直接从Outlook中,我得到一个带有一条直线的圆圈。是否有我需要在应用程序上设置的属性才能使其正常工作。我使用此代码将消息放到窗体窗口上以便工作。

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

这是我写的代码,它放在了Icon上。

 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);
        }
    }

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

1 个答案:

答案 0 :(得分:3)

您正在寻找创建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的drop处理程序,以便此图标成为&#34; magic&#34;删除对象的目标。
  3. 有关如何在ATL / C ++中创建Drop Handler的示例代码,请查看Microsoft All-In-One code framework,特别是类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/