社区
Web 开发
帖子详情
50分悬赏高手急救!求实例在jsp中调用vc++6。0生成的activex控件内的方法
qq14891724
2004-10-27 02:26:28
1、求实例:求实例在jsp中调用vc++6。0生成的activex控件内的方法
2、求实例:activex中调用dll控件方法
很显然,我最后的目的是在jsp中调用dll。
有用的指教同样给分。谢谢大家帮助。
...全文
188
9
打赏
收藏
50分悬赏高手急救!求实例在jsp中调用vc++6。0生成的activex控件内的方法
1、求实例:求实例在jsp中调用vc++6。0生成的activex控件内的方法 2、求实例:activex中调用dll控件方法 很显然,我最后的目的是在jsp中调用dll。 有用的指教同样给分。谢谢大家帮助。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ytcx_lt_82
2005-06-15
打赏
举报
回复
ding
free_card
2005-06-15
打赏
举报
回复
首先,如果我们要用JACOB至少需要对JNI有些基本的了解,写过一些JNI应用程序,这样我们就不难理解JACOB的运行机制。如果我们熟悉C/C++,更加能够增进我们的理解。下面详细介绍下一个简单COM对象的建立,然后演示在C++中如何调用,明白这一点,我们再结合java本地方法的调用机制,从而透过一个中间C++方法调用这个简单COM对象。
1。建立一个COM对象,如下,简单的调用MessageBox弹出消息框。
// HelloWorld.cpp : Implementation of CHelloWorld
#include "stdafx.h"
#include "CPlusCOM.h"
#include "HelloWorld.h"
/////////////////////////////////////////////////////////////////////////////
// CHelloWorld
STDMETHODIMP CHelloWorld::SayHelloWorld()
{
// TODO: Add your implementation code here
MessageBox(NULL, "Hello World.", "CPlusCOM.HelloWorld", 1);
return S_OK;
}
该工程在VC6.0中建立一个简单COM,只添加这个接口方法。
2。然后,我们写一个控制台的C++程序来调用这个COM对象(Client.cpp)
#include <windows.h>
#include "CPlusCOM.h"
const IID IID_IHelloWorld = {0x87A437D2,0x1210,0x4CEC,{0x99,0x67,0xB2,0x75,0x23,0x4C,0x3B,0x64}};
const CLSID CLSID_HelloWorld = {0xCB85B082,0xB040,0x4865,{0x9A,0xEF,0x61,0xCE,0x0E,0xE1,0xAC,0xB1}};
// 这两个常量到MIDL产生的IIDs and CLSIDs声明文件中拷贝出来
int main(int argc, char* argv[]){
CoInitialize(NULL); // Init COM subsystem
IHelloWorld* pHelloWorld;
HRESULT hr = CoCreateInstance(CLSID_HelloWorld, NULL, CLSCTX_ALL, IID_IHelloWorld, (void **)&pHelloWorld);
if (SUCCEEDED(hr)) {
pHelloWorld->SayHelloWorld(); // use the object
}
pHelloWorld->Release(); // free the object
CoUninitialize();
return 0;
}
编译cl Client.cpp /link ole32.lib
生成Client.exe,执行Client.exe,将弹出消息窗口。
3。编写一个java应用,来调用这个COM,这里需要用到第二步技术。首先我们编写一个包含本地方法的java类。
public class JClient{
static {
System.loadLibrary("CPlusCOMBridge");
}
static native void CPlusMessageBox();
public static void main(String[] args){
CPlusMessageBox();
}
}
编译,然后用javah生成本地方法头文件,然后实现本地方法,在本地方法中实现调用COM对象。
#include "JClient.h"
#include "CPlusCOM.h"
#include <windows.h>
const IID IID_IHelloWorld = {0x87A437D2,0x1210,0x4CEC,{0x99,0x67,0xB2,0x75,0x23,0x4C,0x3B,0x64}};
const CLSID CLSID_HelloWorld = {0xCB85B082,0xB040,0x4865,{0x9A,0xEF,0x61,0xCE,0x0E,0xE1,0xAC,0xB1}};
/*
* Class: JClient
* Method: CPlusMessageBox
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_JClient_CPlusMessageBox
(JNIEnv *env, jclass cls){
CoInitialize(NULL); // Init COM subsystem
IHelloWorld* pHelloWorld;
HRESULT hr = CoCreateInstance(CLSID_HelloWorld, NULL, CLSCTX_ALL, IID_IHelloWorld, (void **)&pHelloWorld);
if (SUCCEEDED(hr)) {
pHelloWorld->SayHelloWorld(); // use the object
}
pHelloWorld->Release(); // free the object
CoUninitialize();
}
这个里面方法体与第二步实现是一模一样的。编译中间本地方法
cl JClient.cpp -IE:\j2sdk1.4.2\include -IE:\j2sdk1.4.2\include\win32 /LD /link ole32.lib /out:CPlusCOMBridge.dll
最后,我们就可以跑一跑从java调用这个COM了。
这就是整个java调用COM的过程,JACOB其实就是实现了一个通用的Java-COM的桥梁即JAva-COM Bridge。在后面的文章中我们再来探讨JACOB在实际中的应用。
njpyxujin
2005-05-20
打赏
举报
回复
我写的是JSP调用DLL,用JNI,,我也在搞JSP调用ACTIVEX控件,BTW:我是搞VC的,第一次搞JAVA。
你要的话,我可以把我JNI给你看看。。
wangnewton
2004-11-01
打赏
举报
回复
mark
EdifierX
2004-10-27
打赏
举报
回复
不知道,帮顶。
qq14891724
2004-10-27
打赏
举报
回复
加分,100回报好了,呵呵
wangyugod
2004-10-27
打赏
举报
回复
等待结果 !~~
qq14891724
2004-10-27
打赏
举报
回复
自己顶顶先
qq14891724
2004-10-27
打赏
举报
回复
更正:
2、求实例:activex中调用dll控件方法
应当是
2、求实例:activex中调用dll方法
html 自动加载
activex
控件
,管理加载项未显示加载
控件
已安装
控件
,但是在“管理加载项”
中
“所有加载项”
中
就是这个:已安装的
控件
只有在网页
调用
此
控件
时才会在加载项里出现IE加载项没有禁用Flash Player为什么Flash Player前一阵IE浏览器重置过,加载项里的Flash Player 并没有被禁用,视频可以Flash Player插件有
ActiveX
、NPAPI、PPAPI三种类型,NPAPI是FireFox(火狐)等浏览器用的,而不是I...
dsscocx
控件
出错怎么办_OCX
控件
导入成功,但是
调用
其
中
的函数则出现错误,
急救
~~!...
//Created by Microsoft (R) C/
C++
Compiler Version 12.00.8447.0 (355ecce2).////f:\mycode\xx\debug\MOCPlayer.tlh////
C++
source equivalent of Win32 type library f:\\mycode\\xx\\MOCPlayer.ocx//compiler-ge...
jsp
内置对象之Request和response
1. 内置对象之前我们使用一个对象,必须通过类名new出来,之后才能使用!User user=new User(); user.属性名/user.
方法
但是我们刚才看到了一些列的request.getXXX()疑问?request对象何时被创建?在
jsp
中
,不需要我们手动的
实例
化,直接使用的对象====》内置对象内置对象 作用对应的Java类Page 当前页面ThispageContext当前页面...
海姆立克
急救
法步骤详解
急救
人员介绍,如果婴幼儿被异物噎住呼吸道,家长应该采取的是海姆立克
急救
法,而不是用拍背、倒立等无效的
方法
。 也不要用手扣 https://jingyan.baidu.com/article/fcb5aff777c8e1edaa4a71e8.html ...
PHP之十六个魔术
方法
详解 转自:青叶
目录 PHP之十六个魔术
方法
详解前言范例〇、__serialize() 和 __unserialize()一、 __construct(),类的构造函数二、__destruct(),类的析构函数三、 __call(),在对象
中
调用
一个不可访问
方法
时
调用
。四、 __callStatic(),用静态方式
中
调用
一个不可访问
方法
时
调用
五、 __get(),获得一个类的成员变量时
调用
六、 __s...
Web 开发
81,117
社区成员
341,739
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章