Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling Win32 API method from Java

I need to call some methods in Wininet.dll from a Java program.

I can find plenty of tutorials on how to call a new DLL that I create from Java, but I can't seem to find any tutorials on how to call an already existing DLL from Java.

I know this involves JNI, but how, exactly, do I do this? Do I need to call javah on Wininet.h? Where do I get a copy of Wininet.h? A pointer to an existing, detailed tutorial would be sufficient.

like image 789
Paul Reiners Avatar asked Mar 05 '10 18:03

Paul Reiners


People also ask

What is Win32 API calls?

Win32 is the 32-bit application programming interface (API) for versions of Windows from 95 onwards. The API consists of functions implemented, as with Win16, in system DLLs. The core DLLs of Win32 are kernel32. dll, user32. dll, and gdi32.

Is Win32 API written in C?

All of the DLLs in the Win32 API, and most of the kernel-level structures are implemented in C code.

Do people still use Win32?

Yes, all future versions of Windows will relies on Windows NT and Windows NT use Win32 API.

What is the purpose of the Win32 API subsystem?

Alternatively referred to as the Windows API and WinAPI, Win32 is the main set of Microsoft Windows APIs used for developing 32-bit applications. These APIs are responsible for functions in the following categories: Administration and Management - Install, configure, and service applications or systems.


1 Answers

  1. JNA seems the industry standard of what you want, "provides Java programs easy access to native shared libraries (DLLs on Windows) without writing anything but Java code—no JNI or native code is required"

  2. There is also Java Foreign Function Interface - example usage
    If is ok for you, you could embed the JRuby interpreter and call winapi via jruby-ffi wich is a lot easier, see here, here, and here

like image 175
clyfe Avatar answered Oct 08 '22 03:10

clyfe