Tag: jna

如何用JNI或JNA阅读窗口标题?

希望重新回到发展空间; 主要使用Java来调用一些原生的win32函数(我不想在.NET中构建)…. 有人能指出我可以使用Java(JNI / JNA / SWIG)从不同的运行窗口读取标题的地方。 假设您将知道您尝试连接的应用程序在内存空间中的位置。

在OSGi包中加载DLL(使用JNA)

OSGi找不到我的DLL文件,我似乎无法弄清楚为什么。 目前我在我的bundle的根目录下有DLL文件( foo.dll ),我也试过在libs目录下使用它。 有问题的捆绑的清单看起来像这样: Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: foobundle Bundle-SymbolicName: com.foo.bar Bundle-Version: 1.0.0 Bundle-Vendor: me Import-Package: com.sun.jna, com.sun.jna.ptr, com.sun.jna.win32 Export-Package: com.foo.bar Bundle-NativeCode: foo.dll; osname=WindowsXP; processor=x86 然后在我的JNA界面中执行loadLibrary(根据文档): public interface MyFooInterface extends com.sun.jna.Library{ static final MyFooInterface INSTANCE = (MyFooInterface)com.sun.jna.Native.loadLibrary(“foo”, MyFooInterface .class); // specific interface defs here… } 然后在另一个类中我尝试使用JNA接口 // …code int var = MyFooInterface.INSTANCE.bar(); // […]

JavaFX最小化未修饰的阶段

我有一个未修饰的JavaFX Stage,以及我自己的最小化,最大化和关闭按钮。 但遗憾的是,与装饰行为相比,单击Windows 7中的任务栏图标不会自动最小化舞台。 有没有办法通过单击任务栏图标来最小化纯Java代码的未修饰阶段? 如果不是,我怎么能用JNA做到这一点? 编辑:好的,我一直在尝试用JNA来解决这个问题,但是在C / C ++ / JNA旁边做了很多,我设置它有点麻烦。 如果有人帮我把各个部分放在一起,我将不胜感激。 到目前为止,这是我的代码: public final class Utils { static { if (PlatformUtil.isWin7OrLater()) { Native.register(“shell32”); Native.register(“user32”); } } // Apparently, this is the event I am after public static final int WM_ACTIVATEAPP = 0x1C; public static void registerMinimizeHandler(Stage stage) { // Hacky way to get […]

使用JNA链接到自定义DLL

如何使用JNA访问自定义.lib / .dll函数? 有人能提供一个例子吗? 谢谢。

如何从java代码调用外部dll函数

我需要从Java代码调用外部DLL库函数。 我使用Netbeans 7.2。 我的dll的function是: Boolean isValid(string word) List getWords(String word) 我正在关注这个例子。 但我不知道如何声明我的dllfunction。 我发现了另一个链接 。 但它对我不起作用。

如何通过Java获取系统/硬件信息?

我需要通过Java应用程序获取系统和硬件信息。 我对……感兴趣: Os细节; 处理器计数,名称,处理器负载百分比; 记忆状态(总/免费); 每个进程的Os进程(线程)计数和CPU /内存使用情况; 网络统计(针对每个接口); 是否有可以执行此操作的Java库?

Java:点击窗口(包括文本/图像)

我想在Java中创建一个透明的覆盖层, 始终在顶部 ,并且我可以点击 。 我发现了一些关于这个问题的类似 post ,但即使在听完他们的答案后,我也遇到了一个问题。 我的问题是让整个窗口点击。 我在使用JFrame时没有任何问题,但是一旦我向它添加任何组件 (JLabel或ImagePanel), 点击属性就不会延续到它们。 因为我想为我的应用程序提供一个背景图像,这基本上使我无法看到每当我单击文本/图像覆盖的区域时窗口如何聚焦的代码。 在我展示我正在使用的代码之前,我首先想要参考这些 线程 , 这些 线程基本上准确地描述了我想要的东西,除了在C#中。 我的目标是创建一个带有透明.png图像的叠加层和一些将在关键事件上更改的文本。 如果它使用JFrame或任何其他库无关紧要。 我只需要它与Windows兼容。 我还想提一下,我有一些Java经验,但是使用JFrame是一个新手。 import java.awt.BorderLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.SwingConstants; import com.sun.jna.platform.WindowUtils; public class Overlay { public static void main(String[] args) { JFrame frame = new JFrame(“Overlay Window”); frame.setUndecorated(true); frame.setAlwaysOnTop(true); frame.getRootPane().putClientProperty(“apple.awt.draggableWindowBackground”, false); frame.setLocation(400, 400); frame.getContentPane().setLayout(new java.awt.BorderLayout()); […]

JNA / ByteBuffer没有被释放并导致C堆耗尽内存

首先我要说的是,我对JNA和Java如何指导本机内存分配的理解充其量只是内心,所以我试图描述我对正在发生的事情的理解。 除了回复之外的任何更正都会很棒…… 我正在运行一个使用JNA混合Java和C本机代码的应用程序,并且正在运行Java垃圾收集器无法释放对直接本机内存分配的引用的可重现问题,从而导致C堆内存不足。 我很肯定我的C应用程序不是分配问题的来源,因为我将java.nio.ByteBuffer传递给我的C代码,修改缓冲区,然后在我的Java函数中访问结果。 我在每个函数调用期间都有一个malloc和一个相应的free ,但是在用Java重复运行代码后,malloc最终会失败。 这是一个有点夸张的代码集,展示了这个问题 – 实际上我试图在函数调用期间在C堆上分配大约16-32MB 。 我的Java代码做了类似的事情: public class MyClass{ public void myfunction(){ ByteBuffer foo = ByteBuffer.allocateDirect(1000000); MyDirectAccessLib.someOp(foo, 1000000); System.out.println(foo.get(0)); } } public MyDirectAccessLib{ static { Native.register(“libsomelibrary”); } public static native void someOp(ByteBuffer buf, int size); } 然后我的C代码可能是这样的: #include #include void someOp(unsigned char* buf, int size){ unsigned char *foo; foo = […]

使用JNA获取/设置应用程序标识符

继续我之前关于Windows 7任务栏的问题 ,我想诊断为什么Windows没有确认我的应用程序独立于javaw.exe 。 我目前有以下JNA代码来获取AppUserModelID : public class AppIdTest { public static void main(String[] args) { NativeLibrary lib; try { lib = NativeLibrary.getInstance(“shell32”); } catch (Error e) { System.err.println(“Could not load Shell32 library.”); return; } Object[] functionArgs = new Object[1]; String functionName = null; Function function; try { functionArgs[0] = new String(“Vendor.MyJavaApplication”) .getBytes(“UTF-16”); functionName = […]

尝试使用Java(JNA)中的DLL。 无法加载库exception

我从教程中获得了NetBeans项目,导致exception: 线程“main”中的exceptionjava.lang.UnsatisfiedLinkError: Unable to load library ‘simpleDLL’:找不到指定的模块。 试图将simpleDLL.dll放在项目库中,将文件复制到system32文件夹中没有成功。