有没有一个Java库可以访问本地的Windows API?

24

是否有Java库可以访问本地的Windows API?可以使用COM或JNI。


我想知道这个Java本地库是否可以追踪当前的打印作业信息,包括“副本数量”等。 - gumuruh
6个回答

25
你可以尝试这两个,我已经看到它们都很成功。 http://jawinproject.sourceforge.net Jawin是一种免费的开源架构,用于Java与Microsoft的组件对象模型(COM)或Win32动态链接库(DLL)之间的互操作。 https://github.com/twall/jna/ JNA使Java程序可以轻松访问本地共享库(Windows上的DLL),而不需要编写任何JNI或本机代码。这个功能类似于Windows的Platform/Invoke和Python的ctypes。访问在运行时是动态的,无需生成代码。
JNA允许您使用自然的Java方法调用直接调用本地函数。Java调用看起来就像在本地代码中一样。大多数调用不需要特殊处理或配置;不需要样板文件或生成的代码。
此外,在这里阅读: http://en.wikipedia.org/wiki/Java_Native_Interface Java Native Interface (JNI)是一个编程框架,允许在Java虚拟机(JVM)中运行的Java代码调用和被调用1本地应用程序(特定于硬件和操作系统平台的程序)和用其他语言编写的库,如C、C++和汇编。 http://en.wikipedia.org/wiki/Java_Native_Access Java Native Access提供了Java程序访问本地应用程序接口(Native API)的机制。程序可以轻松访问本地共享库,而无需使用Java Native Interface(JNI)。JNA的设计旨在以最小的努力提供自然的本地访问方式。不需要样板文件或生成的粘合代码。


5

JNA很不错。我只是一个初学者,发现它非常易用。它不仅适用于Win32 API,而且适用于几乎所有其他DLL。


3

Jacob 在 COM 方面表现得非常出色(但它是真正的 COM - 就像你用 C++ 编写一样 - 如果你熟悉真正的 COM 编程,那么使用 Jacob 就很容易)


不是要挑剔,但COM通过C接口公开服务。 - IInspectable

1

另一个选项是WinRun4J。它具有本地绑定层,旨在与pinvoke.net(dot net中使用的本地绑定格式)兼容。有关更多信息,请参见examples。这还比较早期,所以可能会有所不同。

(完全披露:我在该项目上工作)。

另一个选项是JFFI-这在jruby和jython中用于与本地库交互。


1

1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接