A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈君 金牌黑马   /  2014-8-21 17:09  /  909 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

这篇文章主要介绍了c#调用vc写的ocx控件示例,需要的朋友可以参考下
在c#中怎样调用VC写的OCX控件,主要有两个关键环节
两个关键环节:导入ocx控件,创建实例。

1 注册ocx:

  1. regsvr32.exe alasunsmscon.ocx
复制代码

2 在CMD窗口中执行:

  1. AxImp.exe alasunsmscon.ocx
复制代码

生成两个文件:alasun.dll,Axalasun.dll
3 在项目中引用Axalasun.dll
4 调用

  1. Axalasun.Axalasunsms sms = new Axalasun.Axalasunsms();
  2. sms.CreateControl();
复制代码

就可以使用了


这里还有一个c#控制台模式下调用vc开发的ocx组件的示例
1、注册组件 regsvr32 C:\WINDOWS\system32\HX.ocx
2、用Aximp.exe工具对HX.ocx做转换,对APT.ocx再次封装成两个类库(HX.dll,AxHX.dll)
3、代码

  1. using System;
  2. using System.Data;
  3. using System.IO;
  4. using System.Messaging;
  5. using System.Net;
  6. using System.Text;
  7. using System.Text.RegularExpressions;
  8. using System.Threading;
  9. using System.Web;
  10. using System.Data.SqlClient;
  11. using AXHH;//ocx控件
  12. using HH;//ocx控件
  13. using System.Windows.Forms;
  14. namespace Ocx_test
  15. {
  16. public class Program
  17. {
  18. //设置静态变量
  19. static AXHH hh;
  20. [STAThread]
  21. static void Main(string[] args)
  22. {
  23. //初始化ocx控件
  24. hh = new AXHH();
  25. //显式调用该实例的CreateControl()方法才能调用其他方法否则在调用时系统将报AxHost.InvalidActiveXStateException异常
  26. hh.CreateControl();
  27. //调用控件属性及方法
  28. hh.ip="127.0.0.1";
  29. hh.test();
  30. }
  31. }
复制代码

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

  1. 线程名.SetApartmentState(System.Threading.ApartmentState.STA);//设置模式,必须在启动之前设置。
  2. // 启动线程将调用 ThreadStart 委托。
  3. 线程名.Start();
复制代码


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马