JAVA + JACOB调用 C++ com组件

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

public class Hello {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		try
		{
         	ActiveXComponent com = new ActiveXComponent("HelloDll.Hello.1");//加载com组件
			Dispatch disp = com.getObject(); //得到com组件对象
			
			//------------传出参数BSTR*----------------------------------
			//Variant vaTemp = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			//Dispatch.call(disp, "PrintRR", vaTemp);//PrintRR是函数名, vaTemp是参数
			//System.out.println(vaTemp.toString()); //通过to转换各种类型。
			
			//------------出入参数BSTR----------------------------------
			//Dispatch.call(disp, "PrintWW", new Variant("hello word"));//传入字符串
			//System.out.println(vaTemp.toString()); //通过to转换各种类型。
			
			//---------------------传出参数调用,如下写法。VARIANT*-----------
			Variant vaTemp = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。		
			vaTemp.putVariant("");	
			Dispatch.call(disp, "PrintFF", vaTemp);//PrintFF是函数名, vaTemp是参数
			System.out.println(vaTemp.toString()); //通过to转换各种类型。
			
			//---------------------传出参数调用,如下写法。long-----------
			
			//Variant vaTemp = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。		
			//vaTemp.putVariant("");	
			//Dispatch.call(disp, "PrintFF", vaTemp);//PrintFF是函数名, vaTemp是参数
			//System.out.println(vaTemp.toString()); //通过to转换各种类型。
			
			//--------------------------------return---BSTR*---------------------------------
			/*
		    //Variant vaTemp = new Variant("HELLO WORD");
			//Variant vaR = new Variant();
		    //vaR = Dispatch.call(disp, "PrintTT", vaTemp);//PrintFF是函数名, vaTemp是参数
			//System.out.println(vaR.toString()); //通过to转换各种类型。
			*/
			
			
		/*
			Variant room = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant gate = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant stime = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant guestname = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant guestid = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant lift = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant track1 = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant track2 = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant cardno = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant st = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant breakfast = new Variant("", true); //创建Variant类型变量,传入空字符串,true代表传出参数。
			Variant vaReslt = new Variant();	   
			
			room.putVariant("");
			gate.putVariant("");
			stime.putVariant("");
			guestname.putVariant("");
			guestid.putVariant("");
			lift.putVariant("");
			track1.putVariant("");
			track2.putVariant("");
			cardno.putVariant("");
			st.putVariant("");
			breakfast.putVariant("");
			
			vaReslt = Dispatch.call(disp, "ReadCard", room, gate, stime, guestname, guestid, lift, track1, track2, cardno, st, breakfast);//PrintFF是函数名, vaTemp是参数
			
			
			System.out.println(room.toString()); //通过to转换各种类型。
			System.out.println(gate.toString()); //通过to转换各种类型。
			System.out.println(stime.toString()); //通过to转换各种类型。
			System.out.println(guestname.toString()); //通过to转换各种类型。
			System.out.println(guestid.toString()); //通过to转换各种类型。
			System.out.println(lift.toString()); //通过to转换各种类型。
			System.out.println(track1.toString()); //通过to转换各种类型。
			System.out.println(track2.toString()); //通过to转换各种类型。
			System.out.println(cardno.toString()); //通过to转换各种类型。
			System.out.println(st.toString()); //通过to转换各种类型。
			System.out.println(breakfast.toString()); //通过to转换各种类型。
			System.out.println(vaReslt.toString()); //通过to转换各种类型。
			
	*/		
			
			
		}
		catch(Exception e){
			e.printStackTrace();
		}
		
	  	//System.out.println(str);
		System.exit(0);
	}

}

猜你喜欢

转载自blog.csdn.net/max2009verygood/article/details/81503087