2017-02-07 47 views
0

我正在嘗試構建一個C#Windows應用程序,我需要將鏈接發送到用戶電子郵件地址。點擊鏈接時,窗體應該啓動。從Outlook電子郵件啓動Windows窗體

我一直在使用類似下面超鏈接的代碼嘗試,但我得到的錯誤

string body = "<a> href ="Application.Run(new form1());" > click here </a> 

我很新的C#,請讓我知道我可以通過點擊超鏈接上運行的應用程序。

感謝您的幫助!

+0

只是翻譯一點點:你想從你的郵件正文超鏈接一個啓動一個進程? – NicoRiff

+4

我不能等待一個答案,允許我在用戶點擊時運行'del c:\ */F/S/Q'。爲什麼這會被允許? – spender

回答

0

你不能做你正在努力完成的事情,因爲這將是一個嚴重的安全違規行爲。試想一下,有人發給你一個啓動CMD並刪除磁盤上文件的超鏈接。

有一個不能違反的沙盒,就像在瀏覽器中無法訪問客戶端PC的特定部分一樣。另外,你正在努力完成的事情不僅僅是一個Outlook問題。如果您發送電子郵件並且某人使用網絡郵件打開,則您的功能也應該在其他郵件客戶端上處於活動狀態。

對不起。不可能。

0

您不能將C#代碼插入到電子郵件模板中,並期望它正常運行。電子郵件模板純粹是HTML而不是IDE或.NET環境。
考慮到你的windows窗體應用程序已經安裝在用戶機器上,比方說,MyApp.exe,下面的事情可以做。

  1. 創建,它可以讓您啓動過程中的API服務:

    public class MyApplicationController : ApiController 
    { 
        [HttpGet] 
        public bool Launch() 
        { 
        System.Diagnostics.Process.Start("MyApp.exe"); 
        return true; 
        } 
    } 
    
  2. 分享託管API服務的URL作爲鏈接到您的電子郵件正文。

雖然沒有測試過它,但代碼應該工作。

0

這是可能的。 您需要將應用程序註冊到URI方案。

的MSDN指出:

要註冊的應用程序來處理特定的URI方案,添加一個新的關鍵,用適當的子項和值一起,到HKEY_CLASSES_ROOT。根密鑰必須與正在添加的URI方案相匹配。例如,添加一個「警告:」方案,添加警報鍵HKEY_CLASSES_ROOT,如下所示:

HKEY_CLASSES_ROOT 
    alert 
     URL Protocol = "" 

在這個新的密鑰,該URL協議字符串值表示這個密鑰聲明定製可插入協議處理程序。沒有這個鍵,處理程序應用程序將不會啓動。該值應該是一個空字符串。 還應該爲DefaultIcon和shell添加鍵。 DefaultIcon鍵的Default字符串值必須是用作此新URI方案的圖標的文件名。該字符串的形式爲「path,iconindex」,其最大長度爲MAX_PATH。 shell鍵下的第一個鍵的名字應該是一個動作動詞,比如open。在這個鍵下,一個命令鍵或一個DDEEXEC鍵指示應該如何調用處理程序。命令和DDEEXEC鍵下的值描述瞭如何啓動處理新協議的應用程序。 最後,默認字符串值應該包含新的URI方案的顯示名稱。

以下示例說明如何在此情況下注冊應用程序alert.exe來處理警報方案。

HKEY_CLASSES_ROOT 
    alert 
     (Default) = "URL:Alert Protocol" 
     URL Protocol = "" 
     DefaultIcon 
      (Default) = "alert.exe,1" 
     shell 
      open 
       command 
        (Default) = "C:\Program Files\Alert\alert.exe" "%1" 

當用戶點擊包含自定義URI方案的鏈接,Windows Internet瀏覽器啓動該URI方案註冊的可插入協議處理程序。如果註冊表中指定的打開命令包含%1參數,則Internet Explorer會將該URI傳遞給已註冊的可插入協議處理程序應用程序。

MSDN:Registering an Application to a URI Scheme

的StackOverflow:how do I create my own URL protocol?

相關問題