{VS2010C#}{WinForm}{ActiveX}VS2010C#開發基於WinForm的ActiveX控件

在VS2010中使用C#開發基於WinForm的ActiveX控件

常見的一些ActiveX大部分是使用VB、Delphi、C++開發,使用C#開發ActiveX要解決下面三個問題:
html

  • 使.NET組件能夠被COM調用
  • 在客戶機上註冊後,ActiveX控件能經過IE的安全認證
  • 已在客戶機上註冊時,安裝包能經過IE的簽名認證

配置:win 7,VS2010
安全

步驟第一步,建立控件

1.建立WinForm控件,命名爲WebForm,如圖1:服務器

 

2.設置項目的Assembly屬性,如圖2所示,並對Make Assembly Com-Visible選項劃鉤測試

而且設置項目的編譯選項,如圖3所示,對Register for COM Interop選中對COM組件進行註冊。(注意,此處若是實在debug狀態下修改的,那在調到release狀態下還須要再設置一次。)ui

 

3.打開AssemblyInfo文件添加引用 using System.Security; 而且添加 [assembly: AllowPartiallyTrustedCallers()] 語句url

using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security;   //note!

// General Information about an assembly is controlled through the following 
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("WebForm")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("WebForm")]
[assembly: AssemblyCopyright("Copyright ©  2014")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]

[assembly: AllowPartiallyTrustedCallers()]   // note!

 

4.爲控件類建立一個惟一的GUID,注意這裏的GUID不能和AssemblyInf中的GUID相同,生成GUID的方法以下spa

使用Microsoft Windows SDK Tools中的GUID Generator生成新的GUID,如圖debug

COPY生成的GUID到記事本,再拷貝GUID的字符串到控件類,並添加引用 using System.Runtime.InteropServices;3d

using System.Runtime.InteropServices;    // note !

namespace
WebForm { [Guid("575483BC-7224-44F5-A77C-78AB7FC4E606")] // note! public partial class UserControl1 : UserControl { public UserControl1() { InitializeComponent(); } } }

 

第二部分,打包發佈ActiveX控件

5.ActiveX控件能夠使用VS 2010的安裝項目進行部署,使用VS 2010建立Windows Form的安裝工程就能夠將ActiveXdll進行打包。在打包時注意將ActiveX控件項目做爲主輸出項目,並設置其Register屬性爲vsdrpCOM,建立打包項目以下圖5所示:code

以後添加項目輸出,以下圖

 

6.設置項目屬性,以下圖,文件名就是打包後安裝文件.MSI的文件名。設置包文件、壓縮方式,CAB size,這三項均選擇默認值便可。

最後設置安裝URL,這裏的安裝URL是用來發布或者測試ActiveXURL地址的,咱們設置爲本地url:K:/VSProject/WebForm/Setup/Debug/

 

7. 將以前的WebForm.dll打包進ActiveX控件。

將WebForm.dll放入包中,以下圖,build solution以後,便會出現Setup.exe和Setup.msi兩個文件,其中Setup.exe就是咱們在使用ActiveX時的codebase文件。

 

8.測試基於WinForm的ActiveX控件。新建一個htm文件,輸入以下代碼並保存:

其中id爲創建的控件類名,classid爲步驟中生成的Guid,codebase爲本地的ActiveX安裝源,若是作服務器能夠修改成ip源等,這裏暫不贅述。

<object id="UserControl1" 
        classid="clsid:575483BC-7224-44F5-A77C-78AB7FC4E606" 
        width="500"
        height="500" 
        codebase="K:/VSProject/WebForm/Setup/Debug/Setup.exe">
</object>

 

測試結果

如圖,由C#建立的基於WinForm的控件能夠正確的顯示在IE Explorer中

 

參考資料

http://www.cnblogs.com/yungboy/archive/2011/01/10/1932433.html

http://homer.cnblogs.com/archive/2005/01/26/97822.aspx

http://www.cnblogs.com/Charles2008/archive/2010/04/11/1709844.html

http://www.cnblogs.com/homer/archive/2005/01/04/86473.html

http://www.cnblogs.com/homer/archive/2005/01/08/88780.html

http://www.cnblogs.com/homer/archive/2005/01/08/88780.html

相關文章
相關標籤/搜索