问题标签 [jna]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1191 浏览

winapi - Win32API:如何创建快捷方式(.lnk 文件)

我是Java开发人员,所以请原谅我的无知。

我想创建一个可执行文件的快捷方式,例如,在用户的自动启动或发送到文件夹中(我不希望安装程序这样做,因为安装程序通常由管理员运行)。我可以为该任务使用什么 API(首选 C)(也许使用 JNA)?提前致谢。

0 投票
1 回答
586 浏览

java - 使用 JNA 的 *short 的 Java 类型是什么

使用 JNA 的 *short 的 Java 类型是什么

我的 dll 中有 short 和 *short,那么如何调用 short -> int *short -> int[]?

谢谢,亚历克斯

0 投票
1 回答
655 浏览

c# - 如何使用 JNA 创建 Microsoft Windows 子窗口

我花了一些时间尝试通过在 JNA(Java Native Access)上使用以下代码来创建现有窗口的子窗口,但我想这与尝试使用 Windows API 的所有其他编程语言几乎相同。

这是我对 CreateWindowsExA的声明:

这就是我所说的:

在调用该函数后,我得到了一个有效的按钮处理程序......但它不可见。对 getLastError 的调用和对 TranslateMessage 的后续调用给了我"The function completed successfully"。此外,如果我调用 GetAncestor(childButton,3),我会将句柄返回给 parentWindowHandler。我也可以调用 GetWindowTextA(childButton..bla) 并获得Show Message字符串。所以,显然我已经创建了 parentWindow 的一个孩子,它就在那里。但是,它是不可见的。接下来想到的是我的窗口/标签位于其父级的 z-index 的底部,因此必须进行一些其他调用,我打算这样做。但如果我走错了方向,我只会浪费一点时间。

我如何让这个孩子可见或我做错了什么。您应该注意,我不会在回调中调用它或发送任何消息。

任何指针?

0 投票
1 回答
2951 浏览

windows - 在 JNA 中创建一个原生 Windows 窗口,并使用 GWL_WNDPROC 创建一些 GetWindowLong

再会,

我一直在使用 JNA 与 Windows API 交互,现在我在创建窗口时卡住了。就我所做的如下: 1. 已经创建了现有窗口的子窗口并获得了一个有效的处理程序。2. 了解 Windows 中的每个窗口都有一个不间断的消息分发循环。3. 了解将我的窗口包含在消息调度循环中的最佳方法是使用类似以下代码的代码(不是我的,但我也会这样做):

但是,我的问题是,当我为父窗口(我的第一行代码)调用 GetWindowLong() 时,我得到的指针为 0,表示函数未成功完成。随后调用 GetLastError() 并快速检查错误代码会给我一个“拒绝访问”错误。这当然是合乎逻辑的,因为我试图从我自己的线程访问另一个 WNDPROC 的地址,但我想知道是否有任何方法(当然应该有)来规避它。

任何指针?(双关语)

0 投票
1 回答
8637 浏览

java - 使用 JNA 将 Java 类传递给 void* 参数

我在 C 中有一个函数,我试图用JNA从 Java 调用它:

根据JNA 文档, void* 需要com.sun.jna.Pointer传递给函数。在带有 JNA 的 java 中,我相信上述函数将被包装如下:

需要链接到Pointer并传入参数的对象s将是实现JNA结构的类,例如:

不幸的是,该参数ls是一个整数,表示类的长度(以字节为单位)。Java 没有sizeof函数,所以这增加了一点复杂性。我遇到的另一个主要问题是确保我正确地将对象的内容传递到本机内存并返回。

我的代码类似于以下内容:

我收到一个错误,即传递的数据的大小比C 函数预期的要大。

上面的代码大致遵循与处理类似问题的问题的答案中提供的相同类型的步骤,但在 C# 中。我已经尝试并测试它在 C# 中工作。

我的问题类似于Stackoverflow 上的另一个问题,但它处理的是指向 IntByReference 的指针,而不是指向类的指针。

0 投票
1 回答
3205 浏览

java - 通过 JWS 部署的 Applet 在 JNA 中使用本机库的正确方法(java web start)

我正在使用通过 JWS (Java Web Start) 部署的小程序。此小程序包含一些本机功能:JNA。用户 32、内核 32 和 Gdi32。当我通过 JWS 启动小程序时,我得到以下信息:

这很奇怪,对吗?如果我用 jarsigner 检查我的 jar,它们似乎都已签名(我使用 Netbeans 的自动签名,但即使我手动签名也不起作用)。由于我对小程序和 JWS 技术还很陌生,我想知道再试一次……是否意味着 JNLP 找不到合适的类。

更奇怪的是,如果我在小程序中定义一个本机方法,例如单击小程序上的按钮时给我一个 Windows 消息框的方法,如果我单击小程序上的按钮,它就可以工作,但是如果我尝试通过 javascript 调用相同的函数失败。所以这是我的 .jnlp 文件:

根据一些信息,我发现我应该将 jna.jar 的 user32_x86 目录单独转换为 jar 并将其作为 nativelib href 包含在我的 jnlp 中,但它不起作用。此外,尝试使用 doPrivileged 包装对小程序中本机函数的每个调用也不起作用。

任何帮助,将不胜感激

0 投票
1 回答
1256 浏览

arrays - JNA:如何访问结构中的结构数组?

我正在尝试访问结构内的结构数组。这是相关的 C 代码简化为问题:

在 C 中访问数组就像这样简单:

我如何在 Java 中实现它?我问这个问题是因为我是 JNA 的新手。到目前为止,我阅读了 JNA 文档并尝试了每个与我的问题有关但没有运气的示例......

我使用 JNAerator 来转换头文件。我不知道结果是否正确:

任何帮助,将不胜感激。

0 投票
2 回答
1831 浏览

java - JNA在windows平台上映射LPCSTR

我正在使用 JNA 为 C/C++ 调用一个 DLL api。DLL 中的函数 API 是短 DKT_init(LPCSTR 名称)。我将相应的 java 方法设为 public short DKT_init(String name); 但是当我调用它时,DLL API 返回一个参数错误。我想知道如何在 JNA 中映射 LPCSTR?由于 LPCSTR 是 cons char * 但 String 是 char *。

0 投票
1 回答
1285 浏览

java - using Xlib XnextEvent on linux using JNA

I want to grab the all global key events on linux using JNA same as window hooks. following is the code:

I donot know whats going wrong. I am unable to use XGrabKeyboard. Please help me out.

Thanks and regards, Vivek Birdi

0 投票
2 回答
398 浏览

java - 通过 JNA 检索数组

我从被调用函数分配的内存块中获取信息时遇到问题。具体来说,XGetWindowPropertiesJNA 附带的 X11 库中有函数。它通过最后一个参数 - 返回结果PointerByReference prop_return

我知道实际的内存区域包含一个Window. 但是如何创建这些对象?我看不到任何从指针本身获取它的方法,也无法从中获取 a Buffer,因为我不知道Window.

真正的功能是:int XGetWindowProperty(...., unsigned char **prop_return)使用我调用它的参数,它实际上是int XGetWindowProperty(...., Window *prop_return[]).