91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

c#開發ocx

發布時間:2020-07-13 02:01:31 來源:網絡 閱讀:744 作者:wulangxiong 欄目:編程語言

  在C#中,其實沒有OCX控件一說,相對應的只是COM組件,編譯后也是.DLL,而不是.ocx.所以在C#中,在創建項目時只能創建類庫項目。
然后就是具體的代碼開發。(略)
要使組件成為能被網頁腳本調用的OCX控件,在開發時,要注意以下幾點:
1、必須要為將發布OCX控件的主類設置GUID碼。該碼在創建類庫時,C#會自動生成一個(你可以使用,也可以重新生成),并存儲在AssemblyInfo.cs中。設置GUID的代碼參照以下:
namespace xxxx
{
    [Guid("8d7d8518-ca58-4863-b94d-3c616fda7b35")]//從AssemblyInfo.cs文件中直接復制過來
    public partial class RunData : UserControl, IObjectSafety
    {}
}  
2、必須要實現IObjectSafety接口。該接口需要手工創建一個接口類并讓OCX組件實現。
完整的接口代碼:(以下接口代碼都是固定的,最好不要做其他改動)
using System;
using System.Collections.Generic;
using System.Text;
using System.Web.UI.WebControls.WebParts; //必須引用該包
using System.Security;
using System.Runtime.InteropServices;     //必須引用該包
namespace RunData
{
    /// 
    /// 把控件發布成com組件時必須實現的接口.該接口的GUID是固定的,不能修改,否則組件發布不成功
    /// 
    [Guid("CB5BDC81-93C1-11CF-8F20-00805F2CD064"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
    public interface IObjectSafety
    {
        // 方法定義
       void GetInterfacceSafyOptions(System.Int32 riid,out System.Int32 pdwSupportedOptions,out System.Int32 pdwEnabledOptions);
       void SetInterfaceSafetyOptions(System.Int32 riid,System.Int32 dwOptionsSetMask,System.Int32 dwEnabledOptions);
    }
}
接口實現:
public void GetInterfacceSafyOptions(System.Int32 riid,out System.Int32 pdwSupportedOptions,out System.Int32 pdwEnabledOptions)
        {
            pdwSupportedOptions = 1;  //不要修改該代碼
            pdwEnabledOptions = 2;    //不要修改該代碼
            return;
        }
public  void SetInterfaceSafetyOptions(System.Int32 riid,System.Int32 dwOptionsSetMask,System.Int32 dwEnabledOptions)
        {
            return;
        }
3、對AssemblyInfo.cs進行編輯,修改相應的屬性。包括以下屬性及值:
    // 則將該類型上的 ComVisible 屬性設置為 true。
    [assembly: ComVisible(true)] //將false更改為true,自動生成的注釋也做了說明
    //新添加下面的屬性。該屬性要求引用System.Security
    [assembly: AllowPartiallyTrustedCallers()]
   // 如果此項目向 COM 公開,則下列 GUID 用于類型庫的 ID
   //[assembly: Guid("80c07fca-841c-43c9-bd34-e9f3a6e87a85")]  //注釋掉該屬性,此屬性必須注釋,最初我沒有注釋此屬性,生成COM組件老是不成功,有警告,會影響最后的發布.試了N次才試出原因是沒有注釋此屬性。
    要引用:using System.Runtime.InteropServices;
4、編輯工程屬性。
   A、在[應用程序]頁,輸出類型必須指定為“類庫”.
   B、在[生成]頁,必須勾選“為Com Interop注冊”選項。
作了以上修改,如果能編譯成功,則表示你的COM組件已夠在你本機發布成功了。也說明你的組件本身沒什么問題了。
你可以寫一個測試網頁對你的COM組件進行引用了。
如果是IIS,可以直接使用DLL引用方式進行引用,格式:
也可以使用clsid方式引用。
如果非IIS應用服務器,如tomcat等,則只能使用CLSID方式。格式:
"8d7d8518-ca58-4863-b94d-3c616fda7b35"就是最開始提到的那個GUID碼!
在本機上運行此網頁應該不會出現問題了,因為在開發組件的過程中VS.NET會自動進行組件注冊。
使用OLE查看器可以查看當前組件是否成功注冊到本機,如果沒有找到該組件,應該使用手工注冊方式進行注冊。
通常情況下手工注冊OCX都是采用RegSvr32.exe,但注冊C#編寫的COM組件推薦使用.NET自帶的注冊工具RrgAsm.exe工具,而且使用的注冊工具版本一定要與開發框架版本一起發布的版本

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁强县| 泗水县| 重庆市| 乐平市| 普宁市| 湖口县| 苏尼特左旗| 班戈县| 闸北区| 惠州市| 谢通门县| 普兰店市| 诸城市| 德昌县| 达尔| 林口县| 沂南县| 大英县| 安龙县| 昌吉市| 改则县| 安宁市| 柏乡县| 历史| 普定县| 奉新县| 嵊州市| 泰州市| 朝阳市| 肃南| 阿尔山市| 乌兰浩特市| 平乡县| 隆子县| 长岭县| 图片| 红河县| 高淳县| 乌兰县| 双峰县| 饶阳县|