- 浏览: 165808 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
sunjia44:
很不错的方法
JTable设置单元格不可编辑 -
atian25:
主要是html dom生成的太多了.4.x版本中grid得到了 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
aspnetdb:
遇到过同样的情况,纠结中。grid显示不只和行后关系和列的多少 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
beyondsphinx:
我用TABLE一次加载几百行浏览器也卡死啊,客户端电脑,浏览器 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死! -
共产主义:
我也遇到这个问题。用buffergrid加载的时候,数据量一多 ...
ExtJS中GridPanel一次性加载500条以上数据(不分页),性能超级差,有时导致浏览器卡死!
一.在程序用jnative调用window的dll
1. 安装
http://sourceforge.net/projects/jnative
解压后得到3个文件:JNativeCpp.dll,libJNativeCpp.so,JNative.jar,其中:
JNativeCpp.dll 放在windows/system32目录下
libJNativeCpp.so linux下使用
JNative.jar 导入工程中
2. 使用
2.1. 加载dll文件
JNative可使用两种方式加载dll文件:
a.使用System.loadLibrary加载,使用此方法可加载系统目录中的dll文件。
b.可以先把dll文件复制到system32目录下,使用文件前缀名作为参数来加载dll文件。使用System.load加载,此方法参数为dll文件全路径名。
2.2. 调用函数
a、首先创建JNative对象:
JNative jnative = new JNative(dll文件名, 函数名);
b、设置返回值类型:
jnative.setRetVal(Type.INT);
c、设置参数
jnative.setParameter(0, Type.STRING, …); //设置第一个参数为字符串
jnative.setParameter(1, Type.INT, String.valueof(…)); //设置第二个参数为整数
d、执行
n.invoke();
e、获取返回值
Integer.parseInt(jnative.getRetVal());
3.实例
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.HeapMemoryBlock;
public class Test {
public static void main(String[] args) throws NativeException, IllegalAccessException {
JNative v=new JNative("Kernel32.dll","GetModuleFileNameA");
int i = 0;
v.setRetVal(Type.INT);
Pointer pName = new Pointer(new HeapMemoryBlock(1024));
v.setParameter(i++, 0);//module handle
v.setParameter(i++, pName);//pFileName
v.setParameter(i++, 1024);//nSize
v.setRetVal(Type.INT);
v.invoke();
int ret = Integer.parseInt(v.getRetVal());
if (ret == 0) {
// return "null";
System.err.println(
"GetModuleFileName failed!");
} else {
String path = pName.getAsString().substring(0,
ret);
pName.dispose();
v.dispose();
System.out.println("current process's path is:"+path);
}
}
}
4.注意:
在JNative中用了JDK1.5的一些特性,如枚举、静态引入等,所以在JDK1.4下是不能用的。
二.在程序用jawin调用window的dll
jawin 可以对dll中的方法进行调用,也可以调用com中的方法.内部还提供了一个工具,直接对 com组件导出成 java的类,个人认为很方便。
下面是我们作的一个测试,很顺利便通过了。
1、下载jawin:http://jawinproject.sourceforge.net/。
2、配置:
a.将jawin.jar放于%JAVA_HOME%"jre"lib"ext下。
b.将jawin.dll放于c:"winnt"system32下。否则将出现错误:COMException : no jawin in java.library.path;
也可将jawin.dll放于每个项目目录下。
c.至此在Editplus中调试Jawin/NJawin的例子,可以通过。而在Eclipse中有时还会出上面的错误:COMException : no jawin in java.library.path。
d.在Eclipse中,菜单->window->preference->Java->installed JREs 将原来的remove,重新建一个指到你的java sdk目录。 ok了。
3、程序测试:
import org.jawin.FuncPtr;
import org.jawin.ReturnFlags;
public class GfJawinTest {
public static void main(String[] args) {
try {
FuncPtr msgBox = new FuncPtr("USER32.DLL", "MessageBoxW");
msgBox.invoke_I(0, "Hello From a DLL", "From Jawin", 0, ReturnFlags.CHECK_NONE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.利用jawin调用com组件, 如word:
//创建word
import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;
public class CreateWord {
public static void main(String[] args) {
try {
Ole32.CoInitialize();// 初始化
DispatchPtr app = new DispatchPtr("Word.Application");// 创建word对象
app.put("Visible",true); // 使word可见
DispatchPtr docs=(DispatchPtr)app.get("Documents"); // 获得document对象集合
DispatchPtr doc=(DispatchPtr)docs.invoke("Add"); // 新增一个文档
app.invoke("Activate"); // 激活当前文档
DispatchPtr objTextFont=(DispatchPtr)((DispatchPtr)doc.get("Content")).get("Font");
// 取得Font对象
objTextFont.put("Name","黑体");
// 设置字体
objTextFont.put("Size","48");
// 设置字号
DispatchPtr docSelection=(DispatchPtr)app.get("Selection");
// 取得Selection对象
docSelection.invoke("TypeText","Jawwintesttext!"nJawin测试文本。");
// 使用TypeText方法添加文本
doc.invoke("SaveAs","d:""jawintest.doc");
// 保存文档(保存在C盘根目录下)
doc.invoke("Close");
// 关闭当前文档,去掉前面的注释符并重新编译后可生效
app.invoke("Quit");
// 退出Word,去掉前面的注释符并重新编译后可生效
Ole32.CoUninitialize(); // 释放对象
} catch (Exception e) {
e.printStackTrace();
}
}
}
//打开word
import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;
public class OpenWord {
public static void main(String[] args) {
try {
Ole32.CoInitialize();
DispatchPtr app = new DispatchPtr("Word.Application");
app.put("Visible", true);
DispatchPtr docs = (DispatchPtr) app.get("Documents");
DispatchPtr doc = (DispatchPtr) docs.invoke("Open", "d:""word.doc");
Ole32.CoUninitialize();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//调用word中的另存为,保存为.html
import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;
public class Word2Html {
public static void main(String[] args) {
String path = "e://17001939578.doc";
int iPos = path.lastIndexOf(".");
String fileExtName = path.substring(iPos + 1);
String fileMainName = path.substring(0, iPos);
fileExtName = fileExtName.toLowerCase();
try {
Ole32.CoInitialize();
// 初始化
DispatchPtr app = new DispatchPtr("Word.Application");
// 创建word对象
app.put("Visible", false);
// 设置word不可见
DispatchPtr docs = (DispatchPtr) app.get("Documents");
// 取得Documents对象
DispatchPtr doc = (DispatchPtr) docs.invoke("Open", path);
// 打开指定的word文件
doc.invoke("SaveAs", fileMainName + ".html");
// 另存为HTML文件
app.invoke("quit");
// 关闭word
Ole32.CoUninitialize();
// 释放对象
System.out.println(""n转换完成!");
System.out.println(""n文件名:" + fileMainName + ".html");
} catch (Exception e) {
System.out.println(""n该文件不存在!或者其他错误(如:运行环境问题)!");
}
}
}
1. 安装
http://sourceforge.net/projects/jnative
解压后得到3个文件:JNativeCpp.dll,libJNativeCpp.so,JNative.jar,其中:
JNativeCpp.dll 放在windows/system32目录下
libJNativeCpp.so linux下使用
JNative.jar 导入工程中
2. 使用
2.1. 加载dll文件
JNative可使用两种方式加载dll文件:
a.使用System.loadLibrary加载,使用此方法可加载系统目录中的dll文件。
b.可以先把dll文件复制到system32目录下,使用文件前缀名作为参数来加载dll文件。使用System.load加载,此方法参数为dll文件全路径名。
2.2. 调用函数
a、首先创建JNative对象:
JNative jnative = new JNative(dll文件名, 函数名);
b、设置返回值类型:
jnative.setRetVal(Type.INT);
c、设置参数
jnative.setParameter(0, Type.STRING, …); //设置第一个参数为字符串
jnative.setParameter(1, Type.INT, String.valueof(…)); //设置第二个参数为整数
d、执行
n.invoke();
e、获取返回值
Integer.parseInt(jnative.getRetVal());
3.实例
import org.xvolks.jnative.JNative;
import org.xvolks.jnative.Type;
import org.xvolks.jnative.exceptions.NativeException;
import org.xvolks.jnative.pointers.Pointer;
import org.xvolks.jnative.pointers.memory.HeapMemoryBlock;
public class Test {
public static void main(String[] args) throws NativeException, IllegalAccessException {
JNative v=new JNative("Kernel32.dll","GetModuleFileNameA");
int i = 0;
v.setRetVal(Type.INT);
Pointer pName = new Pointer(new HeapMemoryBlock(1024));
v.setParameter(i++, 0);//module handle
v.setParameter(i++, pName);//pFileName
v.setParameter(i++, 1024);//nSize
v.setRetVal(Type.INT);
v.invoke();
int ret = Integer.parseInt(v.getRetVal());
if (ret == 0) {
// return "null";
System.err.println(
"GetModuleFileName failed!");
} else {
String path = pName.getAsString().substring(0,
ret);
pName.dispose();
v.dispose();
System.out.println("current process's path is:"+path);
}
}
}
4.注意:
在JNative中用了JDK1.5的一些特性,如枚举、静态引入等,所以在JDK1.4下是不能用的。
二.在程序用jawin调用window的dll
jawin 可以对dll中的方法进行调用,也可以调用com中的方法.内部还提供了一个工具,直接对 com组件导出成 java的类,个人认为很方便。
下面是我们作的一个测试,很顺利便通过了。
1、下载jawin:http://jawinproject.sourceforge.net/。
2、配置:
a.将jawin.jar放于%JAVA_HOME%"jre"lib"ext下。
b.将jawin.dll放于c:"winnt"system32下。否则将出现错误:COMException : no jawin in java.library.path;
也可将jawin.dll放于每个项目目录下。
c.至此在Editplus中调试Jawin/NJawin的例子,可以通过。而在Eclipse中有时还会出上面的错误:COMException : no jawin in java.library.path。
d.在Eclipse中,菜单->window->preference->Java->installed JREs 将原来的remove,重新建一个指到你的java sdk目录。 ok了。
3、程序测试:
import org.jawin.FuncPtr;
import org.jawin.ReturnFlags;
public class GfJawinTest {
public static void main(String[] args) {
try {
FuncPtr msgBox = new FuncPtr("USER32.DLL", "MessageBoxW");
msgBox.invoke_I(0, "Hello From a DLL", "From Jawin", 0, ReturnFlags.CHECK_NONE);
} catch (Exception e) {
e.printStackTrace();
}
}
}
4.利用jawin调用com组件, 如word:
//创建word
import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;
public class CreateWord {
public static void main(String[] args) {
try {
Ole32.CoInitialize();// 初始化
DispatchPtr app = new DispatchPtr("Word.Application");// 创建word对象
app.put("Visible",true); // 使word可见
DispatchPtr docs=(DispatchPtr)app.get("Documents"); // 获得document对象集合
DispatchPtr doc=(DispatchPtr)docs.invoke("Add"); // 新增一个文档
app.invoke("Activate"); // 激活当前文档
DispatchPtr objTextFont=(DispatchPtr)((DispatchPtr)doc.get("Content")).get("Font");
// 取得Font对象
objTextFont.put("Name","黑体");
// 设置字体
objTextFont.put("Size","48");
// 设置字号
DispatchPtr docSelection=(DispatchPtr)app.get("Selection");
// 取得Selection对象
docSelection.invoke("TypeText","Jawwintesttext!"nJawin测试文本。");
// 使用TypeText方法添加文本
doc.invoke("SaveAs","d:""jawintest.doc");
// 保存文档(保存在C盘根目录下)
doc.invoke("Close");
// 关闭当前文档,去掉前面的注释符并重新编译后可生效
app.invoke("Quit");
// 退出Word,去掉前面的注释符并重新编译后可生效
Ole32.CoUninitialize(); // 释放对象
} catch (Exception e) {
e.printStackTrace();
}
}
}
//打开word
import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;
public class OpenWord {
public static void main(String[] args) {
try {
Ole32.CoInitialize();
DispatchPtr app = new DispatchPtr("Word.Application");
app.put("Visible", true);
DispatchPtr docs = (DispatchPtr) app.get("Documents");
DispatchPtr doc = (DispatchPtr) docs.invoke("Open", "d:""word.doc");
Ole32.CoUninitialize();
} catch (Exception e) {
e.printStackTrace();
}
}
}
//调用word中的另存为,保存为.html
import org.jawin.DispatchPtr;
import org.jawin.win32.Ole32;
public class Word2Html {
public static void main(String[] args) {
String path = "e://17001939578.doc";
int iPos = path.lastIndexOf(".");
String fileExtName = path.substring(iPos + 1);
String fileMainName = path.substring(0, iPos);
fileExtName = fileExtName.toLowerCase();
try {
Ole32.CoInitialize();
// 初始化
DispatchPtr app = new DispatchPtr("Word.Application");
// 创建word对象
app.put("Visible", false);
// 设置word不可见
DispatchPtr docs = (DispatchPtr) app.get("Documents");
// 取得Documents对象
DispatchPtr doc = (DispatchPtr) docs.invoke("Open", path);
// 打开指定的word文件
doc.invoke("SaveAs", fileMainName + ".html");
// 另存为HTML文件
app.invoke("quit");
// 关闭word
Ole32.CoUninitialize();
// 释放对象
System.out.println(""n转换完成!");
System.out.println(""n文件名:" + fileMainName + ".html");
} catch (Exception e) {
System.out.println(""n该文件不存在!或者其他错误(如:运行环境问题)!");
}
}
}
发表评论
-
两分钟让你明白什么是ERP
2010-07-03 17:01 870把专业的问题通俗化—— ERP(Enterpris ... -
使用Java将Word转为Html或txt等
2010-04-29 11:01 1235前一段时间为这个问题头疼的不得了,后来查阅了资料终于解决了;现 ... -
如何利用Java-JACOB操作WORD文档
2010-04-29 10:50 1754JACOB是一个 JAVA到微软的 ... -
Ant教程详解
2010-04-22 09:06 866Ant是一个Apache基金会下的跨平台的构件工具,它可以实现 ... -
如何在Web页面上直接打开、编辑、创建Office文档
2010-04-18 15:03 1549如何在Web页面上做到像S ... -
Apache POI For Java Excel
2010-04-18 14:14 1516Apache POI For Java Excel POI的 ... -
Java 串口通信环境的配置
2010-03-19 11:03 2307做串口通信,要从网上下载三个文件:分别是: 1.COMM.J ... -
多浏览器兼容的CSS js 的 tab 选项卡
2010-03-14 14:18 1733<!DOCTYPE html PUBLIC " ... -
简单实用的CSS网页布局中文排版心得
2010-03-14 10:05 857一、如何设定文字字体、颜色、大小 — 使用font f ... -
CSS网页布局编码小技巧整理
2010-03-14 09:59 6591、ul标签在Mozilla中默认是有padding值的,而 ... -
Java编程中中文乱码的问题
2010-03-14 09:45 785http://blog.csdn.net/wonder4/ar ... -
Java操作手机发送短信
2010-03-14 09:09 1428作者:曹祺 Blog: http://bl ... -
一个非常有用工具软件
2010-03-14 08:23 814这个小工具非常有用,它可以将数据库表中的字段生成对应的Java ... -
JDK1.5中的打印服务
2010-03-14 08:18 979package com.unutrip.print; imp ... -
使用SUN的MAIL包发邮件
2010-03-11 09:02 875import java.util.Properties; i ... -
JXL生成Excel并下载
2010-02-01 10:21 1576package cn.hld.practise.excel; ... -
java代码写excel和文本文档的导入导出【转】
2010-02-01 10:09 1654例子1-----》利用jxl包来完成excel导入导出 JX ... -
jxl生成excel
2010-02-01 10:06 805package campaign; import com.s ... -
利用jxl包生成Excel实例
2010-02-01 10:04 1313import jxl.*; import jxl.write. ... -
Tomcat tomcat-users.xml 配置用户
2010-01-31 16:11 1400<?xml version='1.0' encoding ...
相关推荐
总的来说,使用OpenCV在Java环境下开发,你需要理解如何配置和使用Java库,以及如何处理和调用本地系统资源(如`dll`文件)。这需要对Java编程和Windows系统有一定的了解,同时,掌握OpenCV的基本概念和API也是必不...
尽管我们主要通过Java接口与OpenCV交互,但实际的计算和处理工作是由这个dll文件完成的。在运行Java程序时,系统需要找到对应的dll文件才能正确加载OpenCV库。因此,确保这个文件与Java应用一起部署并在系统路径中可...
Jacob通过加载.dll文件来实现Java对COM对象的调用,因此它在Windows环境下运行,支持x64和x86两种架构。 1. **Java COM Bridge(Jacob)**:Jacob是Java开发者在Windows系统中与COM组件通信的一个重要工具。它提供...
在标题中提到的“JNA调用.dll文件或.so动态链接库的代码demo”,这是一个实际应用JNA来调用本地动态库的示例。下面我们将深入探讨JNA的工作原理、使用步骤以及如何处理.dll和.so文件。 1. **JNA工作原理**: JNA...
当系统或某个应用程序在运行时需要特定功能时,会调用这些DLL文件中的函数。 **msjava.dll 的作用** 1. **Java支持**: msjava.dll 提供了对Java语言的支持,使得Windows系统能够运行基于Java的程序和应用。它包含...
总的来说,通过Java调用DLL实现DES加密解密涉及了Java和C/C++的混合编程,需要理解JNI的工作原理,以及如何在C/C++中与DLL交互。这个过程对于那些希望在Java中利用已有的本地库功能的开发者来说是至关重要的。
此外,根据应用需求,可能还需要其他依赖库,例如支持特定数据格式的DLL文件。 使用GDAL Java API,你可以执行以下任务: - 打开和读取多种地理空间数据格式,如TIFF、JPEG、GeoTIFF、Shapefile等。 - 写入新的地理...
《深入解析jacob-1.18-x64.dll文件及其在Java中的应用》 jacob-1.18-x64.dll文件是Jacob库的一个重要组成部分,它为Java应用程序提供了一个桥梁,使得Java能够与Microsoft Windows平台上的本地DLL(动态链接库)...
将dll文件放在正确的位置,可以确保Java虚拟机能够找到并加载它,从而解决运行时错误。 标签中的“软件/插件”指出了“rxtxParallel.dll”是一种软件组件,可能以插件的形式存在。而“java”标签明确了这是针对Java...
通过本文的介绍,我们可以看到Java调用DLL文件不仅可行,而且有多种方式可以选择。其中,JNative提供了一种简单直接的方法,大大降低了调用本地库的难度。对于那些希望利用Java的强大功能同时又需要调用特定DLL文件...
总的来说,'rxtxParallel.dll'和'rxtxSerial.dll'是开发者进行硬件通信的重要工具,尤其对于那些需要与物理世界交互的Java应用程序来说,它们是必不可少的库文件。了解并熟练掌握这两个插件的使用,将极大地提升开发...
这些dll文件是OpenCV在Java中运行所必需的本地库,它们实现了OpenCV的底层功能。 5. **JNI(Java Native Interface)**:JNI是Java平台的一部分,它允许Java代码和其他语言写的代码进行交互。在OpenCV的Java应用中...
综上,"sapjcorfc.dll文件 64位"是SAP与Java世界交互的关键桥梁,它的作用在于使Java开发者能够轻松地在64位环境下实现与SAP系统的深度集成。正确理解和使用这个库文件,将极大地提升开发效率和系统性能。
DLL文件是Windows系统中的一种共享库,其中包含可由多个程序同时调用的函数和资源,以此提高效率和减少磁盘空间占用。 TSC打印机,全称为TSC Auto ID Technology Co., Ltd. 打印机,是一家专注于条形码、二维码和...
### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...
java调用C++生成的dll动态类库文件很强悍
此外,为了调试和解决问题,开发者可能需要了解如何处理常见的错误,如找不到DLL文件、版本不匹配或API调用错误等。这可能涉及检查系统环境变量、确认路径设置正确,以及查阅DLL提供的文档或开发者指南,以确保正确...
Java调用DLL函数是跨平台编程中的一种常见需求,特别是在Java与C/C++代码交互时。JNA(Java Native Access)是Java平台上的一个库,它允许Java代码直接调用本机库(如DLL文件)的函数,而无需编写JNI(Java Native ...
DLL文件通常包含可由多个程序同时使用的代码和数据,它的优势在于可以减少内存占用,提高代码复用率,并使得程序升级更加灵活。 首先,我们需要理解DLL的工作原理。当一个程序需要调用DLL中的函数时,操作系统会...
在Windows系统中,DLL文件作为共享库,可以被多个程序调用,以实现中文字符的正确渲染。 使用iTextAsian.dll时,开发者需要注意以下几点: 1. 集成:在Java项目中,需要将iTextAsian.jar和对应的iTextAsian.dll...