COM组件和调用详细教程


一、引言


实验目的:

构建一个com组件,该组件存储了10000个12位的验证码;输入一个验证码,组件返回该验证码是否正确(是否是10000个其中之一);输入一个字符串,返回一个对应的映射的验证码(映射方法自己定义)。

二、环境

  • Windows 10 ×64
  • Visual Studio 2015
  • IDEA 2018.1.5
  • jacob-1.19

三、实验步骤


1.C#写com组件

以管理员身份运行VS
新建->项目->Visual C#->选择【类库】,名称自定义:MyComToJava,点击【确定】

   

重命名cs文件:MyComToJava.cs,可自定义。弹窗选择【是】

   

右键点击工程->属性->应用程序->程序集信息->“使程序集COM可见(M)”打上勾,点击【确定】

           

生成->“为COM互操作注册(C)”打上勾,保存

   

签名->“为程序集签名(A)”打上勾->新建签名MyComToJava->取消勾选“使用密码保护密钥文件”,点击【确定】,保存

   

通过点击工具->创建 GUID->选择5->新建 GUID->复制->替换C#代码中的两个 GUID 值

       

C#代码:C#代码中必须定义了接口,才可以按照此方法实现调用。一定要写ProgId。

package com.verifycodecomtojava;

import com.jacob.activeX.ActiveXComponent;
import com.jacob.com.Dispatch;
import com.jacob.com.Variant;

import java.util.Scanner;

public class VerifyCode {
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try{
            ActiveXComponent dotnetCom = null;
            //需要调用的C#代码中的命名空间名和类名
            dotnetCom = new ActiveXComponent("MyComToJava.Application");
            System.out.println("连接成功");

            int choose;
            Scanner input = new Scanner(System.in);

            System.out.println("1.判断验证码是否正确");
            System.out.println("2.获取字符串对应的映射的验证码");

            while(true) {
                System.out.println("请选择要进行的操作:");
                choose = input.nextInt();
                if(choose == 1){
//                    Variant var0 = Dispatch.call(dotnetCom, "GetVerifyCode", 0);
//                    String str0 = var0.toString();
//                    System.out.println("组件中的第一位验证码:"+str0);

                    System.out.println("请输入12位验证码:");
                    String code = input.next();
                    //需要调用的方法名和参数值
                    Variant var = Dispatch.call(dotnetCom, "CheckVerifyCode", code);
                    //返回需要的字符串
                    String str  = var.toString();
                    System.out.println(str);
                }
                else if(choose ==2){
                    System.out.println("请输入字符串:");
                    String str = input.next();
                    //需要调用的方法名和参数值
                    Variant var = Dispatch.call(dotnetCom, "StrToVerifyCode", str);
                    //返回需要的字符串
                    String str2  = var.toString();
                    System.out.println(str2);
                }
                else{
                    System.out.println("无效操作!");
                }
            }
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

最后,运行VerifyCode.java。

四、实验结果


1.选择操作“1.判断验证码是否正确”时,输入验证码

   

2.选择操作“2.获取字符串对应的映射的验证码”时,输入字符串,显示该字符串对应的映射的验证码

 

作者:Txue
链接:https://www.jianshu.com/p/be7f61ba7c86
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关