C 寫ActiveX控制項 公司真實專案)

2021-04-14 23:02:00 字數 1925 閱讀 2918

1.問題的提出。

我們公司的系統一開始是用vc6.0開發的,現在的程式是用c#2.0 vs2005開發的,兩個程式之間要進行互相呼叫。

為了好寫命名vc6的com叫 mark.ocx c#的activex叫npr.dll

mark.ocx 要調npr.dll來得到乙個檔案,當檔案開啟的時候,檔案選單上就會出現mark.ocx,像批註一樣的功能,

批註完成以後,npr.dll要把mark.ocx產生的批註資訊放到database裡面,就是這樣乙個呼叫過程。

2.下面是**片段

//介面

[guid(

"bc5969b4-518a-4590-b332-94baaaf1c24a")]

public

inte***ce

iproofread

.../**/

//////

獲取sequence的校次的pdf路徑。

///

///當前校次

///路徑

///得到路徑是否成功

bool

getpdfpath(

intsequence, 

outstring

path); 

#endregion}//

介面實現

[guid(

"eb4cf432-0286-4ec1-9889-8bf3bdcb0882")]

public

class

proofread : iproofread, iobjectsafety

...set

...}

/**/

//////

獲取sequence的校次的pdf路徑。

///

///校次

///路徑

///得到路徑是否成功

public

bool

getpdfpath(

intsequence, 

outstring

path)

...}

下面是vc6呼叫的**:

釋放com

couninitialize();

}#endif

3.關於除錯

用c#寫的com由於與系統不是同一直程序,沒法除錯,現在給大家介紹乙個好用的除錯資訊工具;

dbgview.exe

用法:[dllimport(

"kernel32.dll

", charset 

=charset.auto, setlasterror 

=true

)]private

static

extern

void

outputdebugstring(

char

lptext);

public

static

void

spellerviewlog(

string

errorplace)

public

void

load()

在執行程式的時候,就開啟dbgview.exe,就可以看到:除錯資訊:***了。

哈哈,就寫到這裡了,關於原始碼,我會放到乙個專業的控制項開**壇:

C 呼叫ActiveX控制項

背景 最近專案中需要用到activex控制項,專案是在.net平台下開發的。因此就直接在專案中新增了對activex控制項的引用,新增引用成功。在 中例項化類的例項也沒有問題,但在呼叫其方法或屬性時總是丟擲 未處理 comexception 異常。方法一 1 在系統中註冊該ocx控制項,命令 reg...

C 整合ActiveX控制項

問題描述 最近專案中需要用到activex控制項,專案是在.net平台下開發的。因此就直接在專案中新增了對activex控制項的引用,新增引用成功。在 中例項化類的例項也沒有問題,但在呼叫其方法或屬性時總是丟擲 未處理 comexception 異常。解決方法,按照以下步驟 1.註冊activex控...

c 實現的ActiveX控制項

雖然應用範圍有限,但也算是一種嘗試吧。using system.runtime.interopservices namespace actwsz classinte ce classinte cetype.autodual public class acttest iact public strin...