?“為COM?Interop注冊(cè)”。當(dāng)然也可以為每個(gè)接口設(shè)置COM可見性,ComVisibleAttribute類提供了這樣的控制。更改A..."/>
溫馨提示×

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

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

C#.NET com組件的編寫

發(fā)布時(shí)間:2020-05-31 00:27:09 來(lái)源:網(wǎng)絡(luò) 閱讀:863 作者:寧金峰 欄目:編程語(yǔ)言

環(huán)境:VS2010...WIN7系統(tǒng)
設(shè)置工程屬性:“生成”->?“為COM?Interop注冊(cè)”。
當(dāng)然也可以為每個(gè)接口設(shè)置COM可見性,ComVisibleAttribute類提供了這樣的控制。
更改AssemblyInfo.cs……設(shè)置COM可見

//?將??ComVisible?設(shè)Θ?置?為a?false?使?此?程ì序ò集ˉ中D的?類え?型í
//?對(duì)??COM?組哩?件t不?可é見?。£如?果?需è要癮從洙?COM?訪?問ê此?程ì序ò集ˉ中D的?類え?型í,?
//?則ò將?該?類え?型í上?的??ComVisible?特?性?設(shè)Θ?置?為a?true?!?br/>[assembly:?ComVisible(true)]

建立源碼

using?System;
using?System.Collections.Generic;
using?System.Text;
using?System.Runtime.InteropServices;

namespace?MyLib
{
????[ComVisible(true)]
????[Guid("2CBD3D76-35F1-4f9d-9C1B-9DBFEE412F77")]
????public?interface?IMyClass
????{
????????void?Initialize();
????????void?Dispose();
????????String?VC(String?path);
????}

????[ComVisible(true)]
????[Guid("EA2F140A-108F-47ae-BBD5-83EEE646CC0e")]
????[ProgId("MyLib.MyClassa")]
????public?class?MyClass?:?IMyClass
????{
????????public?void?Initialize()
????????{
????????????//nothing?todo
????????}
????????public?void?Dispose()
????????{
????????????//nothing?todo
????????}
????????public?String?VC(String?path)
????????{
???????????//??x?+?y;
????????????if?(path.Trim().Equals(""))
????????????{

????????????????return?"no?pathx";
????????????}

????????????fastvcAtiLib.fastvcyjmC2k?c?=?new?fastvcAtiLib.fastvcyjmC2k();
????????????//???c.novc?=?true;???//4?test?.only?show?pic?.not?show?vercode?text
????????????//?c.oriImg?=?true;???//img?not?process?and?get?vercode...?cant?echo?show?img?pic?..
????????????c.vg?=?1;
????????????c.sid?=?"c2n";
??????????
????????????string?VerifyCode;
????????????try
????????????{
????????????????VerifyCode?=?c.RecByte(path);
????????????}
????????????catch?(Exception?ex)
????????????{
????????????????VerifyCode?=?ex.Message;
????????????}
????????????return?VerifyCode;
????????}
????}
}
注冊(cè)COM組件DLL
regasm???ClassLibrary1.dll?/codebase

如果你的DLL不?是強(qiáng)簽名的,則必須要使用/codebase參數(shù)

反注冊(cè)使用
regasm??/u?ClassLibrary1.dll

使用HTML中VBS腳本測(cè)試?

<script?language="VBScript">
Dim?o?:?Set?o=CreateObject("MyLib.MyClass")??
??o.Initialize
????MsgBox?"1?+?2?=?"?&?o.vc("c:\dx.jpg")
????o.Dispose
????Set?o=Nothing
</script>
提示不能創(chuàng)建?ACTIVEX?控件……

原因:是因?yàn)樽?cè)沒有注冊(cè)上……

提示找不到路徑

說明已經(jīng)注冊(cè)上了。可能DLL不是強(qiáng)簽名的,而又沒有指定/CODEBASE屬性,導(dǎo)致注冊(cè)里沒有這個(gè)鍵值。而查找不到。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI