【发布时间】:2012-03-05 17:20:48
【问题描述】:
以前有人问过这个问题,但是用我见过的方法,我无法得到我想要发生的事情。目前,我有一个 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);
}
}
任何帮助将不胜感激,谢谢。
【问题讨论】:
-
拖放到 exe 将完全由资源管理器(或任何显示您的 exe)控制。与你自己的代码无关。
-
@adelphus 好的,那么是否有需要更改的设置?就像我说的那样,对于“文件”,它工作得很好,但是在图标上没有前景,没有骰子。感谢您的信息
-
你误会了。 Explorer 将被编码为处理文件 - 您无法更改任何设置,因为在内部 Explorer 将不知道如何处理 Outlook 项目。对您来说,该项目可能看起来像一个文件,但对 Explorer 来说,它是完全不同的东西。我不相信您的问题有解决方案。
-
@adelphus 当您将邮件从 Outlook 拖放到桌面时,Explorer 是如何处理的?它会在此时为您写入一个 .msg 文件。你刚才说的这怎么可能。我认为资源管理器将能够通过命令行或通过拖放传递字节。再次感谢。
-
Explorer 将编写一个 .msg 文件,因为这是它对特定数据格式的编程。我认为您想要的是让资源管理器自动保存文件(这引出了在哪里的问题?)然后使用保存的文件启动您的应用程序。 Explorer 没有被编程来做这些事情。当您尝试将压缩文件夹中的文件拖放到 exe 上时,也会发生同样的情况。
标签: c# winforms drag-and-drop outlook icons