gpt4 book ai didi

java - 在 Java 中将 native 窗口句柄传递给 DLL

转载 作者:行者123 更新时间:2023-12-02 03:52:55 26 4
gpt4 key购买 nike

为了解释这个问题,我想最好解释(简化)我想要做什么。

有一个设备(相机)。该设备的 API 由 native DLL 提供。该 DLL 中的一个函数需要 native 窗口句柄才能直接在应用程序中绘制捕获的图像。 C# 的解决方案是将 PictureBox.Handle 传递给此函数。然而,在 Java 中,绘图组件是 awt.Canvas。此问题的早期实现是获取此 Canvas 的对等点,但自 JDK 1.1 以来已弃用。我也不知道这个方法是否一直有效。因此这是两个问题:

  1. 已弃用的方法真的有效吗?

  2. 是否有其他可能的解决方案将窗口句柄传递给 DLL?

这是 DLL 内函数的签名:

int draw_func(..., const void* window,...);

这就是问题之前是如何解决的(或者可能没有):

long lhwnd = ((sun.awt.windows.WComponentPeer)._canvasPictureBox.getPeer()).getHWnd();

Pointer HWndPtr = new Pointer(lhwnd );

最佳答案

JNA 提供了获取组件 native 对等点的方法 Native.getComponentPointer() ,您可以使用它从 JNA 的 platform.jar 初始化 HANDLE 对象或直接传入。

关于java - 在 Java 中将 native 窗口句柄传递给 DLL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35723018/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com