欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

c#调用vc写的ocx控件示例

程序员文章站 2024-02-23 10:26:10
在c#中怎样调用vc写的ocx控件,主要有两个关键环节 两个关键环节:导入ocx控件,创建实例。1 注册ocx:复制代码 代码如下:regsvr32.exe alasun...

在c#中怎样调用vc写的ocx控件,主要有两个关键环节

两个关键环节:导入ocx控件,创建实例。

1 注册ocx:

复制代码 代码如下:

regsvr32.exe alasunsmscon.ocx

2 在cmd窗口中执行:

复制代码 代码如下:

aximp.exe alasunsmscon.ocx

生成两个文件:alasun.dll,axalasun.dll

3 在项目中引用axalasun.dll

4 调用

复制代码 代码如下:

axalasun.axalasunsms sms = new axalasun.axalasunsms();
sms.createcontrol();

就可以使用了

这里还有一个c#控制台模式下调用vc开发的ocx组件的示例

1、注册组件 regsvr32 c:\windows\system32\hx.ocx

2、用aximp.exe工具对hx.ocx做转换,对apt.ocx再次封装成两个类库(hx.dll,axhx.dll)

3、代码

复制代码 代码如下:

using system;
using system.data;
using system.io;
using system.messaging;
using system.net;
using system.text;
using system.text.regularexpressions;
using system.threading;
using system.web;
using system.data.sqlclient;
using axhh;//ocx控件
using hh;//ocx控件
   using system.windows.forms; 
namespace ocx_test
{
    public class program
    {
        //设置静态变量
        static axhh hh;
        [stathread]
        static void main(string[] args)
        {

            //初始化ocx控件
            hh = new axhh();
            //显式调用该实例的createcontrol()方法才能调用其他方法否则在调用时系统将报axhost.invalidactivexstateexception异常
            hh.createcontrol();

           //调用控件属性及方法
            hh.ip="127.0.0.1";
           hh.test();

           }
}

4、注意,如果是多线程调用,则在  线程名.start() 前加上,例如:

复制代码 代码如下:

线程名.setapartmentstate(system.threading.apartmentstate.sta);//设置模式,必须在启动之前设置。
 // 启动线程将调用 threadstart 委托。
线程名.start();