![](/img/trans.png)
[英]How to drag and drop an email, from Outlook, into a .NET application?
[英]Drag and Drop from Outlook Window to Application .EXE file (or Icon) in .Net
以前曾經問過這個問題,但是根據我看到的方法,我無法得到我想要發生的事情。 目前,我有一個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);
}
}
任何幫助將不勝感激,謝謝。
您正在尋找創建一個Shell Drop Handler 。 正如您所發現的,.EXE文件的默認刪除處理程序接受任何文件作為可放置項,並自動啟動具有刪除文件路徑的應用程序。 Windows資源管理器不直接支持其他項目,例如直接從Outlook拖動的郵件或日歷對象。 Windows附帶的丟棄處理程序的一個示例是,如果將文件拖到ZIP文件上,則在刪除時會自動將該文件添加到ZIP存檔中。
如果您仍想創建自己的放置處理程序,則可以在任何文件上刪除任何放置的項目時執行任何自定義操作(例如程序的圖標,快捷方式等)。這不是一項簡單的任務,並且編寫shell擴展通常不建議使用托管代碼(C#或VB)。 (見: http : //blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx )
創建drop handler之后,它分為兩步:
有關如何在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/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.