日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.NET环境下创建Activex (转)

發布時間:2025/3/20 asp.net 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .NET环境下创建Activex (转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

雖然不倡導在Web環境下使用Activex控件,但有時會遇到與底層通信的問題,這時利用Activex可以比較好的解決,工商銀行的U盾就是如此。Activex還有一個好處就是可以把winform下封裝的用戶控件直接當做web控件來使用。在開發過程中走過許多彎路,現在總結出開發步驟,希望對大家有所助益。

為了盡量簡單中說明問題,我們采用一個幾乎無實際意義的例子。例子中使用的編程語言是C#。

整個示例包括三部分:winform下的用戶控件,安裝文件,以及示例網站。安裝文件的作用是使示例網站中能夠使用winform下的用戶控件。

一. Winform下用戶控件的創建

1.打開vs2010,新建項目->Visual C#->Windows->類庫,名稱為MyUserControlLib,解決方案名稱為UCDemo。

2.刪除自動創建的Class1.cs文件,然后在MyUserControlLib上右鍵->添加->新建項,在彈出的窗口中選擇“用戶控件”,名稱為MyUC,此時會出現一個類似于winform設計界面,我們在上面從工具箱中拖動一個Label和Textbox在上面,效果如下:

3.右鍵->查看代碼,修改代碼如下:

namespace MyUserControlLib
{
??? public partial class MyUC : UserControl
??? {
??????? public string TestString
??????? {
??????????? get { return textBox1.Text; }
??????????? set { textBox1.Text = value; }
??????? }

??????? public MyUC()
??????? {
??????????? InitializeComponent();
??????? }
??? }
}

到此為止,以及完成基本的所需功能,接下來我們要做的是使該控件暴露給Com接口

二. 將用戶控件變成Com可見

1.在MyUserControlLib項目上點擊右鍵,選擇屬性,將打開項目屬性面板,選擇應用程序標簽頁,點擊“程序集信息”按鈕,在彈出的窗口中勾選“使程序集COM可見”

2.切換到生成標簽頁,然后勾選“為Com互操作注冊”,在該頁面的最上面,有一個配置選項,切換到realse,并再次勾選“為Com互操作注冊”。這樣無論是在debug還是在release狀態下,都可以把用戶控件當做com接口使用.

?

?

3.再次打開MyUC.cs,修改代碼如下:

using System; using System.Windows.Forms;
using System.Runtime.InteropServices; namespace MyUserControlLib
{
??? //ProgID 是暴露給com接口的類的唯一名稱
??? [ProgId("MyUC")]
??? //ClassInterface 是包裝MyUC類的Com接口類型
??? [ClassInterface(ClassInterfaceType.AutoDual)]???
??? //Guid 是類的唯一標識符,創建方法將在下面介紹
??? [Guid("7EC724B9-E72C-4886-A802-154D8C25A01D")]
??? //ComVisible 設置類或字段是否Com可見
??? [ComVisible(true)]
??? public partial class MyUC : UserControl
??? {
??????? [ComVisible(true)]
??????? public string TestString
??????? {
??????????? get { return textBox1.Text; }
??????????? set { textBox1.Text = value; }
??????? }

??????? public MyUC()
??????? {
??????????? InitializeComponent();
??????? }
??? }
}

與修改前比較,可以發現主要是添加了兩部分內容,分別是對MyUC類和TestString字段添加了一些特性。下面解釋一下這些字段的作用:
  • ProgID 是暴露給com接口的類的唯一名稱
  • ClassInterface 是包裝MyUC類的Com接口類型
  • Guid 是類的唯一標識符,創建方法將在下面介紹
  • ComVisible 設置類或字段是否Com可見
創建Guid的方法如下:在vs2010中,工具->創建GUID,在彈出的窗口中,在GUID格式中選擇第五個,點擊新建GUID,然后點擊復制,然后在點擊退出,此時返回到VS2010中,在相應位置粘貼即可

到此為止,winform的自定義控件創建完成。

三. 創建安裝文件

安裝文件的創建方法很簡單,在vs2010中,新建->項目->其他項目類型->安裝和部署->Visual Studio Installer,選擇安裝項目,點擊確定

然后單擊“應用程序文件夾”,在右側空白處右鍵->添加->項目輸出,在彈出的窗口中選擇MyUserControlLib,選擇主輸出,再點擊確定即可

?

編譯,安裝文件的創建完成。

四.創建測試網站

1.文件->添加->新建網站,在彈出的窗口中單擊確定

2.在網站中添加一個MyUCTest.aspx頁面,在<body></body>中添加如下代碼:

<a href="Setup1.msi">安裝插件</a>
??????? <br />
??????? <br />
??????? <input id="Button1" type="button" value="調用插件" οnclick="test()" /><br />
??????? <object id="MyUC" classid="clsid:7EC724B9-E72C-4886-A802-154D8C25A01D" width="200"
??????????? height="100" />
??????????? </object> 3.在head中添加如下代碼 <script type="text/javascript">
??????????? function test() {
??????????? alert(document.MyUC.TestString);
??????? }??
??? </script> 從這里我們可以看出,如果要讓自定義控件與js進行交互,直接用對應的字段即可,但是一定要注意的是這個字段必須是[ComVisible(true)]特性 4.打開安裝文件項目的debug文件夾,把其中的Setup1.msi復制到網站下 5.在瀏覽器中查看,首次不能正常顯示,點擊安裝插件鏈接,安裝過后再次刷新頁面應該就能正常顯示 <A href="http://images.cnblogs.com/cnblogs_com/liulixiang/201105/201105231539043084.png"><IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: block; FLOAT: none; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: auto; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: auto" title=17 border=0 alt=17 src="http://images.cnblogs.com/cnblogs_com/liulixiang/201105/201105231539041655.png" width=340 height=220></A>

如果已久不能正常顯示,請把localhost添加為可信網站,添加方法是:internet選項->安全->可信站點->站點,然后把localhost添加到可信站點中即可

轉載于:https://www.cnblogs.com/sgivee/archive/2011/08/10/2133500.html

總結

以上是生活随笔為你收集整理的.NET环境下创建Activex (转)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。