1.创建环境:vs2012 win7 java1.6
2.步骤:
(1);创建一个类库项目RemoteCom,进入项目属性,在应用程序的程序集选项中设置使用程序集com可见
(2);在生成选项中选中为com互操作注册
(3);打开vs的command prompt命令行客户端,输入sn -k remoteAppKey.snk生成签名文件,默认生成在vs安装目录下的vc文件夹中
(4);打开签名选项,选择为程序集签名,选中浏览找到上一步生成的签名文件
(5);c#代码
using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; namespace RemoteCom { [Guid("BD6B85B2-CB93-49E1-8946-9ECC95B9A57B")] public class AppConnect { public AppConnect(){} public string ConnectToApp(string str, string str2) { Console.WriteLine("测试com组件"); return "测试: " + str + " | " + str2; } } }
在工具中选择生成Guid将生成的GUID复制到代码的相应位置
(6);右击项目选择生成
(7);进入项目的Dbug目录,复制.dll和.tlb两个文件,复制到java的开发环境的bin目录
(8);打开command prompt为程序集注册,输入命令regasm RemoteCom.DLL /tlb:RemoteCom.tlb为程序集注册
(9);java代码
public class TestCom { public static void main(String[] args){ try{ ActiveXComponent dotnetCom = null; dotnetCom = new ActiveXComponent("RemoteCom.AppConnect"); //需要调用的C#代码中的命名空间名和类名。 Variant var = Dispatch.call(dotnetCom,"ConnectToApp","juxinli\\xinhao","Info201311"); //需要调用的方法名和参数值 String str = var.toString(); //返回需要的字符串 System.out.println(str); //输出得到的字符串。检查结果是否正确。 } catch (Exception ex) { ex.printStackTrace(); } } }