我正在嘗試構建一個C#Windows應用程序,我需要將鏈接發送到用戶電子郵件地址。點擊鏈接時,窗體應該啓動。從Outlook電子郵件啓動Windows窗體
我一直在使用類似下面超鏈接的代碼嘗試,但我得到的錯誤
string body = "<a> href ="Application.Run(new form1());" > click here </a>
我很新的C#,請讓我知道我可以通過點擊超鏈接上運行的應用程序。
感謝您的幫助!
我正在嘗試構建一個C#Windows應用程序,我需要將鏈接發送到用戶電子郵件地址。點擊鏈接時,窗體應該啓動。從Outlook電子郵件啓動Windows窗體
我一直在使用類似下面超鏈接的代碼嘗試,但我得到的錯誤
string body = "<a> href ="Application.Run(new form1());" > click here </a>
我很新的C#,請讓我知道我可以通過點擊超鏈接上運行的應用程序。
感謝您的幫助!
你不能做你正在努力完成的事情,因爲這將是一個嚴重的安全違規行爲。試想一下,有人發給你一個啓動CMD並刪除磁盤上文件的超鏈接。
有一個不能違反的沙盒,就像在瀏覽器中無法訪問客戶端PC的特定部分一樣。另外,你正在努力完成的事情不僅僅是一個Outlook問題。如果您發送電子郵件並且某人使用網絡郵件打開,則您的功能也應該在其他郵件客戶端上處於活動狀態。
對不起。不可能。
您不能將C#代碼插入到電子郵件模板中,並期望它正常運行。電子郵件模板純粹是HTML而不是IDE或.NET環境。
考慮到你的windows窗體應用程序已經安裝在用戶機器上,比方說,MyApp.exe,下面的事情可以做。
創建,它可以讓您啓動過程中的API服務:
public class MyApplicationController : ApiController
{
[HttpGet]
public bool Launch()
{
System.Diagnostics.Process.Start("MyApp.exe");
return true;
}
}
分享託管API服務的URL作爲鏈接到您的電子郵件正文。
雖然沒有測試過它,但代碼應該工作。
這是可能的。 您需要將應用程序註冊到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?
只是翻譯一點點:你想從你的郵件正文超鏈接一個啓動一個進程? – NicoRiff
我不能等待一個答案,允許我在用戶點擊時運行'del c:\ */F/S/Q'。爲什麼這會被允許? – spender