本例中使用的是淘宝网密码登陆框控件,虽然它有窗口界面,但这里当做没有界面的进行测试。
(因为,还没有用Jacob实现调用需要依赖该窗口界面的相关属性、方法。
主要跟Windows的消息机制有关,由于该控件没有显示,或没有父容器,所以没有给它建立起消息队列,
所有,就算给他 PostMessage,也不会有效果。)
TestJacob.java
- import com.jacob.activeX.ActiveXComponent;
-
import com.jacob.com.ComThread;
-
-
/**
-
* 使用Jacob 调用没有窗口界面的ActiveX/COM组件。
-
*
-
* @author btpka3@163.com
-
*/
-
public class TestJacob {
-
-
public static void main(String[] args) {
-
-
ComThread.InitSTA();
-
-
// 支付宝的控件(PS:虽然有图形界面,但是这里先当作没有图形界面的。示例用。)
-
ActiveXComponent ax = new ActiveXComponent(
-
"CLSID:{488A4255-3236-44B3-8F27-FA1AECAA8844}");
-
-
// 读取属性
-
System.out.println("----------------------- getter ");
-
System.out.println("Identity = " + ax.getPropertyAsString("Identity"));
-
System.out.println();
-
-
// 设置属性
-
System.out.println("----------------------- setter ");
-
System.out.println("PasswordMode = "
-
+ ax.getPropertyAsBoolean("PasswordMode")); // 先读出原值
-
ax.setProperty("PasswordMode", false); // 再设定新值
-
System.out.println("PasswordMode = "
-
+ ax.getPropertyAsBoolean("PasswordMode")); // 最后再读出新值
-
System.out.println();
-
-
// 方法调用
-
System.out.println("----------------------- invoke method ");
-
// 如果要传递字符串参数
-
// Variant strArg = new Variant();
-
// strArg.putString("XXX");
-
System.out.println("ci1() = " + ax.invoke("ci1"));
-
System.out.println();
-
-
// 以下额外一些测试。
-
// 该控件提供的一些可以put的属性貌似没有作用
-
System.out.println("----------------------- FIXME ");
-
System.out.println("----- set TextData ='1111111' ");
-
ax.setProperty("TextData", "1111111");
-
System.out.println("TextData = " + ax.invoke("TextData"));
-
System.out.println("TextValue = " + ax.invoke("TextValue"));
-
System.out.println("----- set TextValue='1111111' ");
-
ax.setProperty("TextValue", "1111111");
-
System.out.println("TextData = " + ax.invoke("TextData"));
-
System.out.println("TextValue = " + ax.invoke("TextValue"));
-
-
ComThread.Release();
-
}
-
}
阅读(3354) | 评论(0) | 转发(0) |