社区
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。
有用的指教同样给分。谢谢大家帮助。
...全文
228
9
打赏
收藏
50分悬赏高手急救!求实例在jsp中调用vc++6。0生成的activex控件内的方法
1、求实例:求实例在jsp中调用vc++6。0生成的activex控件内的方法 2、求实例:activex中调用dll控件方法 很显然,我最后的目的是在jsp中调用dll。 有用的指教同样给分。谢谢大家帮助。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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方法
国央企创新负责人在推动企业转型时,如何获取最新的行业技术趋势和竞争情报?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
科技
中
介服务机构如何通过产业大脑提升服务效率与客户粘性?.docx
科易网基于40亿+科创知识图谱数据库,深度探索AI技术在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,研究科技创新领域的AI+数智化解决方案,推动科技创新与产业创新智能化发展。
国央企创新负责人如何借助科创数智大脑支撑技术攻关与协同创新?.docx
国央企创新负责人如何借助科创数智大脑支撑技术攻关与协同创新?
javaweb学
生成
绩管理系统代码(servlet+
jsp
+mysql)
下载代码方式:https://pan.quark.cn/s/a4b39357ea24 javaweb学
生成
绩管理系统课程设计代码,采用Servlet+
jsp
+mysql技术进行javaWeb学
生成
绩管理系统的构建。系统运行环境设定为Windows10,开发工具选用了Eclipse4.8.0、MyEclipse2014或IDEA,并统一采用UTF-8编码集。Java版本方面,系统基于JDK 1.8,服务器环境部署了tomcat 8.0,数据库则选用MySQL 5.5。在技术栈上,系统综合运用了Servlet+
jsp
+mysql+jQuery+bootstrap以及面向接口编程等技术。系统管理员具备以下功能:个人信息管理,课程管理,成绩管理,学生信息管理,教师管理,以及所有账号的综合性管理。教师的功能范围包括:个人信息管理,课程管理,成绩管理,学生信息管理等。学生则能够进行个人信息管理,以及查看个人成绩等操作。
Web 开发
81,111
社区成员
341,723
社区内容
发帖
与我相关
我的任务
Web 开发
Java Web 开发
复制链接
扫一扫
分享
社区描述
Java Web 开发
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章