`

jnative

c 
阅读更多
http://jnative.free.fr/SPIP-v1-8-3/article.php3?id_article=4

public class JnativeRect extends AbstractBasicData<JnativeRect>{

protected JnativeRect(JnativeRect lValue) throws NativeException {
          super(null);
          createPointer();
          mValue = this;
}

public int left;
public int top;
public int right;
public int bottom;

@Override
public JnativeRect getValueFromPointer() throws NativeException {
// TODO Auto-generated method stub
return null;
}

@Override
public int getSizeOf() {
return 4*4;
}

@Override
public Pointer createPointer() throws NativeException {
  pointer = new Pointer(MemoryBlockFactory.createMemoryBlock(getSizeOf()));
          return pointer;
}

}

public class Demo {
public static void main(String[] args) {
test();
}

public static void test(){
Display dis = new Display();
Shell shell = new Shell(dis,SWT.DIALOG_TRIM|SWT.RESIZE);
shell.setSize(800,600);
shell.setLayout(new FillLayout());
shell.setText("S2 Graph from SWT");
shell.open();
dosomething(shell);
while(!shell.isDisposed()){
if(!dis.readAndDispatch()){
dis.sleep();
}
}
dis.dispose();
}
private static void dosomething(Shell shell) {
try {
HWND hWnd = User32.FindWindow(null,"S2 Graph from SWT");
//m_hPE = PEcreate(PECONTROL_SGRAPH, WS_VISIBLE, &rect, hWnd, 1001);
System.loadLibrary("pegrp32c");// InterfaceFun是dll文件
// 參數說明InterfaceFun dll名,AddZhiYe函數名
JNative jnative = new JNative("pegrp32c", "PEcreate");
// 設置此函數的返回值
int i = 0;
// 賦予參數值
jnative.setParameter(i++,300);
jnative.setParameter(i++,org.xvolks.jnative.util.constants.winuser.WindowsConstants.WS_VISIBLE);

JnativeRect jr = new JnativeRect(null);
jr.getPointer().setIntAt(0, shell.getLocation().x);
jr.getPointer().setIntAt(4, shell.getLocation().y);
jr.getPointer().setIntAt(8, shell.getLocation().x+400);
jr.getPointer().setIntAt(12, shell.getLocation().y+400);
jnative.setParameter(i++,jr.getPointer());

jnative.setParameter(i++,shell.handle);
jnative.setParameter(i++,1001);
// 函數執行
jnative.invoke();
} catch (Exception e) {
e.printStackTrace();
}

}
}
分享到:
评论

相关推荐

    JNative v1.3 docs

    jnative包用于调用dll动态库,目前(2011-12-20)最新版本为1.4RC2,官方正式版本文档为1.3,详见官方地址: http://jnative.free.fr/docs/ 这是最新的帮助文档HTML离线包,希望对大家有帮助 Packages org.xvolks....

    org.xvolks.jnative 源码

    《深入解析org.xvolks.jnative源码》 在Java世界中,为了实现与本地代码的交互,开发者经常需要借助JNI(Java Native Interface)技术。然而,JNI的使用门槛相对较高,涉及到C/C++编程,这给许多Java开发者带来了...

    JNative.jar以及JNative源码

    《深入理解JNative:Java调用DLL的桥梁》 在Java世界中,由于其平台无关性的特性,直接调用本地动态链接库(DLL)并非易事。然而,JNative库的出现,为Java程序员提供了一个方便的解决方案,使得Java能够无缝地与C/...

    JNative Java调用动态链接库jar包

    JNative是一个Java库,它为Java程序员提供了一种直接调用这些本地代码的能力,无需通过JNI(Java Native Interface)的复杂过程。 JNative的核心思想是将Java方法与本地函数绑定,使得Java代码可以像调用普通Java...

    Jnative1.4_java调用动态库所需jar

    1. **导入JNative.jar**: 将`JNative.jar`添加到项目的类路径中,这样Java虚拟机(JVM)就能找到并加载这个库。 2. **声明本地方法**: 在Java类中使用`native`关键字声明本地方法。例如: ```java public class ...

    JNative api说明文档

    **JNative API说明文档** **一、JNative简介** JNative是Java平台上的一个库,它允许Java程序直接调用本地(C/C++)代码,实现了Java与原生代码的无缝交互。通过JNative,开发者可以利用Java的跨平台优势,同时...

    linux jnative 调用.so方法及附属全部库和源码

    JNative getstring = new JNative("libmylib.so", "getstring"); getstring.setRetVal(Type.STRING); getstring.invoke(); System.out.println(getstring.getRetVal()); } } 4.输出结果 this is in test_a.....

    JNative.jar和JNativeCpp.dll

    标题中的"JNative.jar"和"JNativeCpp.dll"是两个关键组件,分别代表Java和C++之间的交互层。在IT行业中,这样的组合通常用于实现Java应用与原生系统资源的紧密集成,例如调用操作系统底层功能或者加速计算密集型任务...

    Jnative资源包源码

    《Jnative资源包源码详解》 Jnative是一款强大的Java本地接口库,它允许Java程序直接调用C和C++的动态链接库(DLL或.so文件),极大地拓展了Java平台的功能。本文将深入探讨Jnative的核心概念、工作原理以及如何在...

    JNative完全自学手册

    JNative完全自学手册 本手册旨在帮助读者完全深度理解掌握JNative核心技术,通过实例众多的讲解,让读者快速掌握JNative技术。 JNative是Java Native Interface的缩写,允许Java程序调用本地函数库,实现Java程序...

    JNative综合学习资料

    《JNative综合学习指南》 在Java编程世界中,JNative是一个重要的工具,它允许Java程序直接调用本地(C/C++)代码,打破了Java原生的“一次编写,到处运行”的沙箱环境,为开发者提供了更强大的功能扩展能力。...

    jnative调用动态库

    标题中的“jnative调用动态库”指的是Java中使用JNative库来调用本地(操作系统级别的)动态链接库(DLL或SO文件)的技术。在Java中,为了与操作系统底层功能进行交互,比如调用C/C++编译的库,我们可以使用Java ...

    JNative.jar 包

    《JNative.jar包详解》 在Java编程领域,我们经常需要与本地代码进行交互,以利用C++或C等语言的高效性能或者调用特定的系统功能。这就是JNI(Java Native Interface)发挥作用的地方。JNative.jar包就是这样一个...

    在Java程序中使用JNative调用dll文件

    在Java程序中调用DLL(动态链接库)文件通常是通过JNI(Java Native Interface)来实现的,而JNative是JNI的一个封装库,它提供了一种更简洁的方式来调用C/C++编写的本地代码。这篇博客文章可能介绍了如何利用...

    JNative用java调用动态库VC++

    在这个场景中,我们关注的是JNative,一个简化Java调用C/C++库的开源库。 JNative 的优点在于它的易用性、数据类型处理的高效以及对回调函数的支持。在使用JNative之前,我们需要了解一些基本概念。例如,`...

    jnative简单的使用

    **JNative:Java与本地代码交互的桥梁** 在Java编程中,有时我们需要调用本地操作系统提供的功能,或者利用已有的C/C++库,这时就需要用到JNative这样的库。JNative是一个开源的Java本地接口(JNI)工具包,它简化...

    Java调用Win32获取窗口句柄JNative-1.3.2

    JNative库是实现这一目标的一种工具,它允许Java代码通过JNI(Java Native Interface)来调用C/C++编写的本地代码,进而调用Win32 API。JNative-1.3.2版本提供了对这一功能的支持。 首先,我们来理解一下Java ...

    jnative源码和文档,包含JNativeCpp.dll和libJNativeCpp.so

    《深入解析JNative:连接Java与C++的桥梁》 JNative,作为一款强大的库,为Java程序员提供了与C++代码交互的能力。它允许Java应用程序调用C++编写的动态链接库(DLL或.so),从而扩展了Java的功能,特别是在处理...

    JNative-1.3.2.zip

    《JNative:Java调用C++的桥梁》 在IT领域,跨语言通信是一个常见的需求,比如Java开发者可能需要调用C或C++编写的库来实现特定功能。JNative正是这样一个工具,它允许Java程序无缝地调用本地(Native)代码,尤其...

Global site tag (gtag.js) - Google Analytics