Java调用ActiveX问题

一号男嘉宾 发布于 2011/07/28 17:01
阅读 9K+
收藏 0

因业务需要,要在java中调用ActiveX控件,哪位兄弟知道的帮忙给个例子,安装网上那些例子试了下jacob,提示都是com.jacob.com.ComFailException: Can't get object clsid from progid,我发誓绝对有把jacob.dll放到system32目录,jacob.jar加载classpath里面,至于你们信不信,反正是我信了~

哪位兄弟知道怎么搞的,帮忙告诉下我,谢谢。

我是真心感谢,至于你信不信,反正我是信了~

加载中
0
TrulyBelieve
TrulyBelieve

Can't get object clsid from progid

是不是progid没写对,尝试用classid而不是progid来创建COM对象

0
一号男嘉宾
一号男嘉宾
我尝试过了,还是报这个错误,兄弟们,救命啊~
0
szf
szf

ActiveX/COM这类dll,不是放在system32目录就OK的,正确的做法是:放在任意目录,然后运行regsvr32 {your_dll_path}\your_dll.dll,就会在注册表中生成此dll的注册信息,然后就可以通过COM的API操作COM对象了

0
TrulyBelieve
TrulyBelieve
或者把jacob.dll放到 jre\bin目录下,试试
0
一号男嘉宾
一号男嘉宾

引用来自“szf”的答案

ActiveX/COM这类dll,不是放在system32目录就OK的,正确的做法是:放在任意目录,然后运行regsvr32 {your_dll_path}\your_dll.dll,就会在注册表中生成此dll的注册信息,然后就可以通过COM的API操作COM对象了

你有实际搞过没,给兄弟个例子看看,我运行了 regsvr32 {your_dll_path}\your_dll.ocx,然后把 your_dll.dll放在system32里面的。
0
TrulyBelieve
TrulyBelieve

activex需要用regsvr32注册,注册后此ocx也好,dll也好,都不要改路径。改了路径需要重新注册。

另外jacob.dll是JNI,它的位置需要测试一下,是system32还是jre/bin

0
一号男嘉宾
一号男嘉宾

引用来自“xiao”的答案

activex需要用regsvr32注册,注册后此ocx也好,dll也好,都不要改路径。改了路径需要重新注册。

另外jacob.dll是JNI,它的位置需要测试一下,是system32还是jre/bin

我试下

 

0
szf
szf

引用来自“幽幽”的答案

引用来自“szf”的答案

ActiveX/COM这类dll,不是放在system32目录就OK的,正确的做法是:放在任意目录,然后运行regsvr32 {your_dll_path}\your_dll.dll,就会在注册表中生成此dll的注册信息,然后就可以通过COM的API操作COM对象了

你有实际搞过没,给兄弟个例子看看,我运行了 regsvr32 {your_dll_path}\your_dll.ocx,然后把 your_dll.dll放在system32里面的。

我用Delphi5/6/7写过十几个ActiveX/COM在各种项目中用了。

而且我上面的说明中,明显是要你先放置好dll文件,再运行regsvr32 xxx.dll,你非要regsvr32后再去移动自己的dll文件,我觉得我的描述中并没有这个意思吧

0
一号男嘉宾
一号男嘉宾

引用来自“szf”的答案

引用来自“幽幽”的答案

引用来自“szf”的答案

ActiveX/COM这类dll,不是放在system32目录就OK的,正确的做法是:放在任意目录,然后运行regsvr32 {your_dll_path}\your_dll.dll,就会在注册表中生成此dll的注册信息,然后就可以通过COM的API操作COM对象了

你有实际搞过没,给兄弟个例子看看,我运行了 regsvr32 {your_dll_path}\your_dll.ocx,然后把 your_dll.dll放在system32里面的。

我用Delphi5/6/7写过十几个ActiveX/COM在各种项目中用了。

而且我上面的说明中,明显是要你先放置好dll文件,再运行regsvr32 xxx.dll,你非要regsvr32后再去移动自己的dll文件,我觉得我的描述中并没有这个意思吧

明天上班我按照兄弟你的试下,现在在家里没环境~

需要的是CLSID还是PROGID?

0
szf
szf

引用来自“幽幽”的答案

引用来自“szf”的答案

引用来自“幽幽”的答案

引用来自“szf”的答案

ActiveX/COM这类dll,不是放在system32目录就OK的,正确的做法是:放在任意目录,然后运行regsvr32 {your_dll_path}\your_dll.dll,就会在注册表中生成此dll的注册信息,然后就可以通过COM的API操作COM对象了

你有实际搞过没,给兄弟个例子看看,我运行了 regsvr32 {your_dll_path}\your_dll.ocx,然后把 your_dll.dll放在system32里面的。

我用Delphi5/6/7写过十几个ActiveX/COM在各种项目中用了。

而且我上面的说明中,明显是要你先放置好dll文件,再运行regsvr32 xxx.dll,你非要regsvr32后再去移动自己的dll文件,我觉得我的描述中并没有这个意思吧

明天上班我按照兄弟你的试下,现在在家里没环境~

需要的是CLSID还是PROGID?

CLSID和PROGID都可以的,具体要看COM容器(这里就是jacob了)使用哪种COM的API,这个要看它的说明文档了。
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部