草庐IT

java - 从操作系统获取事件

我在Windows上工作,但我在Mac上被困在这里。我有佳能SDK并在其上构建了一个JNA包装器。它在Windows上运行良好,在Mac上需要一些帮助。在sdk中,有一个函数可以注册一个回调函数。基本上当相机发生事件时,它会调用回调函数。在windows上,注册后,我需要使用User32来获取事件并通过以下方式调度事件:privatestaticfinalUser32lib=User32.INSTANCE;booleanhasMessage=lib.PeekMessage(msg,null,0,0,1);//peekandremoveif(hasMessage){lib.Transla

java - JNI 与 JNA 性能对比

我们有一个原生c/asm应用程序,利用GPU(OpenCL)使用特定方法处理大型加密/解密数据,它运行完美,没问题.JEE正在开发一部分项目(web和distribution),我们只需要调用nativeapplication/library即可。我们尝试使用Process类将其称为分离的外部进程。问题是我们无法控制应用程序(事件、处理程序、线程等)。我们还尝试将C代码转换为Java代码,但性能下降了。除了将native代码作为进程运行之外,我正在考虑JNA和JNI,但有一些问题。问题:为了更好(更快)的读/写解决方案,是否可以在JNI和JNA中通过直接(非托管)内存[Java(Byt

java - JNI 与 JNA 性能对比

我们有一个原生c/asm应用程序,利用GPU(OpenCL)使用特定方法处理大型加密/解密数据,它运行完美,没问题.JEE正在开发一部分项目(web和distribution),我们只需要调用nativeapplication/library即可。我们尝试使用Process类将其称为分离的外部进程。问题是我们无法控制应用程序(事件、处理程序、线程等)。我们还尝试将C代码转换为Java代码,但性能下降了。除了将native代码作为进程运行之外,我正在考虑JNA和JNI,但有一些问题。问题:为了更好(更快)的读/写解决方案,是否可以在JNI和JNA中通过直接(非托管)内存[Java(Byt

java - 在 Java 中获取 Activity 窗口信息

我正在尝试将我的Java应用程序升级为仅在具有特定名称的进程窗口处于Activity状态时才能工作。我发现使用JNI可以做到这一点,但我不知道该怎么做。我只是找不到任何可以解释它的描述或示例。我的问题是-如何获取Windows中当前Activity窗口的进程名称(通过JNI或其他方式-我接受任何其他解决方案)? 最佳答案 免去一些痛苦并使用JNA.您将需要downloadjna.jar和jna-platform.jar用于Win32API。pinvoke维基和MSDN对于查找正确的系统调用很有用。不管怎样,这里是打印当前Activi

java - 在 Java 中获取 Activity 窗口信息

我正在尝试将我的Java应用程序升级为仅在具有特定名称的进程窗口处于Activity状态时才能工作。我发现使用JNI可以做到这一点,但我不知道该怎么做。我只是找不到任何可以解释它的描述或示例。我的问题是-如何获取Windows中当前Activity窗口的进程名称(通过JNI或其他方式-我接受任何其他解决方案)? 最佳答案 免去一些痛苦并使用JNA.您将需要downloadjna.jar和jna-platform.jar用于Win32API。pinvoke维基和MSDN对于查找正确的系统调用很有用。不管怎样,这里是打印当前Activi

java - JNA 捕获每个窗口 : java. lang.AbstractMethodError

我试图重现捕获以下窗口的尝试:Java-WindowImage(2岁的帖子)我正在使用JNA3.5.0并使用jre7在XP和7下测试了未修改的代码,但都失败了,并显示相同的跟踪:Exceptioninthread"main"java.lang.AbstractMethodError:com.sun.jna.Structure.getFieldOrder()Ljava/util/List;atcom.sun.jna.Structure.fieldOrder(Structure.java:831)atcom.sun.jna.Structure.getFields(Structure.jav

java - 我应该如何在 jna 中按值从 Java 传递和返回 unsigned int 到 C/C++

我的C++函数extern"C"{DECLSPECunsignedintSTDCALLdoNumberThing(unsignedintsome_number);}我的Java界面packagecom.myplace.nativeapi;importcom.sun.jna.Library;importcom.sun.jna.Memory;importcom.sun.jna.Pointer;interfaceNativeAPIextendsLibrary{intdoNumberThing(intsome_number);}显然,在处理仅对一种或另一种不匹配类型(int与unsignedi

java - 如何使用 JNA 将 com.sun.jna.Structure 从 Java 传递到 C 中的结构

我要离开this如何传递com.sun.jna.Structure的示例包含com.sun.jna.StringArray使用JNA从Java转换为nativeC代码,并且无法在C代码中成功获取结构内容。请注意,我可以将C代码中的结构成功传递到Java中的结构,但我无法在Java代码中创建结构并将其作为结构成功发送到C代码。这是有问题的代码:String[]user_name_array=newString[3];user_name_array[0]="test_user_1";user_name_array[1]="test_user_2";user_name_array[2]="t

android - 在 Android Studio 中设置 JNA

我尝试将jna.jar导入到我的项目中,因为JNA是一个非常有用的工具,可以调用基于JNI的Native库。操作系统:Windows10集成环境:AndroidStudio1.5.1JDK:1.8.0_73NDK:r10e我做了什么(AS=安卓工作室)通过AS使用API18创建一个新项目。从他们的GitHub下载jna.jar。https://github.com/java-native-access/jna将jna.jar复制到项目文件夹中。JNATest\app\libs\jna.jar在AS中,右击jna.jar图标,选择AddasLibrary等待几秒钟,检查File->Pro

java - JNA 内存泄漏

鉴于此C++代码:voidLoadData(char**myVar){std::stringstr("[ReallyLongStringHere]");unsignedintsize=str.length()+1;*myVar=newchar[size];strncpy(*myVar,str.c_str(),size);}还有这个JNAJava:PointermyVar=newMemory(Pointer.SIZE);this.Lib.LoadData(myVar);this.someVar=myVar.getPointer(0).getString(0);我有内存泄漏,据我了解,ge