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...