2008-11-18 85 views
5

由於顯然沒有Flash control that can accept bitmap pastes,我想考慮自己寫一個。我寧願不使用Flash,所以我關於使用.NET。在.NET中創建和部署ActiveX控件

現在我相信可以下載並在瀏覽器中運行的本機代碼控制的正確術語是「ActiveX控件」。所以我的問題是,我可以用.NET創建這樣一個ActiveX控件嗎?

我在網上找到了一些教程,但他們都希望你能在你的本地機器上安裝程序集,並且註冊並信任它和訪問它的網站。

這對於潛在的匿名互聯網用戶提出了很多要求,甚至對於內部網用戶來說,另一種部署方法也是可取的。

我清楚地記得一些網站要求我下載這個或那個ActiveX控件。在需要Flash和Java等瀏覽器插件的頁面上,有一些瀏覽器知道該媒體類型的插件獲取位置的機制。

所以我的問題是雙重的:

  • 我可以創建在用戶的瀏覽器在.NET運行控制?
  • 什麼是我可以實現的(半自動)交付的最佳方法?

針對陽光:

是的,很多JavaScript的富文本編輯器允許您將鏈接的圖像粘貼到文本字段,它會插入正確的<IMG>標籤。但是,這隻適用於已經在網絡上有位置的圖像,並且我希望通過複製/粘貼剪貼板中的任意位圖來上傳新圖像。

+0

我真的建議避免黑客剪貼板功能,除非它絕對是您的Web應用程序的核心功能。 – 2008-11-24 08:52:19

回答

5

如果您只使用IE瀏覽器,我喜歡IE託管控件的Active-X的安全模式,但截至2009年1月1日,Microsoft不推薦使用.NET(進程中)來擴展IE所以XBAP沒問題,但不在ActiveX控件或IE託管控件中。

更新7/13:Microsoft發佈了guidance on implementing in-process extensions;它仍然被棄用。

編輯:W/O調整註冊表,IE8將只加載一個。NET託管的來自Intranet或信任區域的控制,以便一般的互聯網使用,Active-X是瀏覽器內完全信任訪問所必需的。

要跟進拉斯的帖子:Silverlight的不能訪問剪貼板:http://silverlight.net/forums/t/13024.aspx

大多數IE的託管控制信息是在博客,所以我用:http://www.google.com/search?q=ie+hosted+control+site:msdn.com找到他們。下面是我發現特別有用的。

快速,方便的控制:http://blogs.msdn.com/mikechr/archive/2006/11/28/writing-a-simple-managed-control-under-ie.aspx

有關安全性的奇怪的事情,除非「證據」是一個URL,該組件可以信任,但不是域,需要斷言修復:http://blogs.msdn.com/carloc/archive/2006/11/01/code-access-security-hosting-control-in-ie.aspx

這在3.5中用「艙單」「固定」。這很複雜,所以請參閱Shawnfa的.NET安全博客中使用清單的說明,以獲取.NET 3.5 Betapost GA .NET 3.5。託德的隨機發現博客還記錄steps for creating a manifest for a hosted control

我發現這有用從知識庫文章設置安全性,但您仍然必須學習相當多關於CAS:http://support.microsoft.com/kb/892466。這可能是決定使用(.net)Active-X與IE託管控件的主要考慮因素 - 也就是說,哪種安全模式最適合您和您的用戶。我希望使用清單將使IE託管控件的工作方式類似於用戶被要求「信任」並且系統創建正確設置的點擊一次。對於我們的公司,我們使用的可以自動爲用戶設置安全性,因此託管是我們的選擇。

我從來沒有想過的一件事是,如果我確實或不必從用戶控件繼承無用控件。這對我來說更好,但我必須「隱藏」對象標籤所在的div。

如果您編譯調試並附加到IE以進行「受管」調試,則很容易調試控件讓控制加載。如果無法加載控件,請在融合程序集綁定查看器上查找信息:http://msdn.microsoft.com/en-us/library/e74a18c4.aspx以及如何打開IEHost跟蹤:http://support.microsoft.com/kb/313892以調試加載過程。

確保版本的程序集的每個版本。如果你不這樣做,那麼IE就會感到困惑,並且當下載緩存中的程序集不同時,它將不會加載控件,但它具有與URL引用的版本號相同的版本號(gacutil/cdl清除.net下載緩存)

2

查找「託管在IE中的Winforms」。幾年前我不得不做類似的事情,那是我最終能夠取得成功的地方。

需要注意的兩件事:正如您可能已經注意到的那樣,這個問題不會經常出現,因此示例是有限的。 (我不再有任何分享,對不起)。另外,.NET的安全模型與基於COM的ActiveX有很大的不同,所以讓它在IE的不同安全區域工作會有點棘手。

如果您有能力使用Silverlight 2,那麼我會傾向於朝這個方向傾斜。

0

使用ActiveX僅限於IE和Windows。最好看看谷歌文檔和/或Gmail,看看他們如何處理粘貼在您的電子郵件/在線文檔中的圖像只使用JavaScript。適用於大多數瀏覽器和操作系統。

+0

我想知道gmail和gdocs中的圖像粘貼是否僅在HTML5瀏覽器中受支持? – 2010-07-12 15:25:29