有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

JNA中的java Oleacc dll支持

我正在尝试使用JNA库为我正在处理的Java项目调用Oleacc dll的AccessibleObjectFromWindow方法

我浏览了JNA文档,并在线搜索了一个示例,但没有找到在Oleacc dll中与JNA一起使用AccessibleObjectFromWindow的好参考

有JNA库背景的人能确认JNA是否包含Oleacc dll的功能吗

如果没有从Java程序中使用Oleacc dll的任何替代方案,也非常感谢

谢谢


共 (1) 个答案

  1. # 1 楼答案

    当你问“JNA包含”这个问题时,指出JNA项目有两个部分是很有帮助的。有jna工件,它包括核心功能,还有jna-platform工件,它包含用户提交的各种平台的JNA映射。我强调“用户提交”,因为JNA是一个社区维护的项目,“JNA在其平台库映射中缺少XXX函数”的常见问题解答是"No, it's not, it's just waiting for you to add it :)"

    Oleacc dll就是这些实例之一。它还不在jna-platform工件中,但如果用户提交了它,它可能会出现。例如,请看,auser in 2015自己绘制了这个库,但没有将它贡献给社区,因此,5年后,您将在这里重现这一成果!如果您在JNA问题中向下滚动,您将看到一些实现您的方法和一些其他方法的示例代码,如果您能够为JNA做出贡献,那将是非常棒的

    同时,当映射不在JNA中时,上面的FAQ链接提供了如何实现它的模板。在您的特定情况下,在您自己的项目中实现AccessibleObjectFromWindow的代码将非常简单。创建包含以下内容的Oleacc类:

    public interface Oleacc extends StdCallLibrary, WinUser, WinNT {
    
        Oleacc INSTANCE = (Oleacc) Native.loadLibrary("oleacc", Oleacc.class, W32APIOptions.DEFAULT_OPTIONS);
    
        HRESULT AccessibleObjectFromWindow(HWND win, int objID, Guid.REFIID iid, PointerByReference ptr);
    }
    

    你完了!那么,JNA中的映射是否已经存在?不,但希望在实现它并测试代码之后,您可以将映射贡献给项目,以便下一个需要这样做的人可以在JNA中找到它