Java-Aufruf für die Windows-API GetShortPathName

Ich möchte die native Windows-API-Funktion in meiner Java-Klasse verwenden.

Die Funktion, die mich interessiert, ist GetShortPathName.http://msdn.microsoft.com/en-us/library/aa364989%28VS.85%29.aspx

Ich habe versucht, dies zu verwenden -http://dolf.trieschnigg.nl/eightpointthree/eightpointthree.html Unter bestimmten Umständen stürzt Java jedoch vollständig ab, wenn ich es verwende. Daher ist dies für mich nicht die Option.

Die Frage ist, muss ich Code beispielsweise in C schreiben, DLL erstellen und diese DLL dann in JNI / JNA verwenden? Oder kann ich irgendwie auf die System-API auf andere Weise zugreifen?

Ich werde mich über Ihre Kommentare freuen. Wenn Sie vielleicht einen Code als Beispiel posten könnten, wäre ich Ihnen dankbar.

...

Ich habe die Antwort mit JNA gefunden



import com.sun.jna.Native;
import com.sun.jna.platform.win32.Kernel32;

public class Utils {

    public static String GetShortPathName(String path) {
        byte[] shortt = new byte[256];

        //Call CKernel32 interface to execute GetShortPathNameA method
        int a = CKernel32.INSTANCE.GetShortPathNameA(path, shortt, 256);
        String shortPath = Native.toString(shortt);
        return shortPath;

    }

    public interface CKernel32 extends Kernel32 {

        CKernel32 INSTANCE = (CKernel32) Native.loadLibrary("kernel32", CKernel32.class);

        int GetShortPathNameA(String LongName, byte[] ShortName, int BufferCount);
    }

}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage