1
J'essaie de maîtriser l'utilisation de JNA avec Mac OS X. Je veux accéder à une bibliothèque Carbon, pour laquelle il n'y a pas d'équivalent Cocoa, donc Rococoa ne peut pas m'aider (I pense ...)Création d'un objet CFString avec JNA
Je suis bloqué lorsque j'essaie d'appeler une fonction Carbon qui nécessite CFStringRef comme paramètre. Comment puis-je créer un CFStringRef à partir d'une chaîne Java?
Voici ma tentative à ce jour:
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Pointer;
import com.sun.jna.ptr.PointerByReference;
public class JnaTest {
public interface AXUIElement extends Library {
AXUIElement INSTANCE = (AXUIElement) Native.loadLibrary("Carbon", AXUIElement.class);
Pointer AXUIElementCreateApplication(int pid);
// HELP: String is clearly wrong here but what should I use?
int AXUIElementCopyAttributeValue(Pointer element, String attribute, PointerByReference value);
}
public static void main(String[] args) {
final int pid = 5264; // make sure this is a valid pid
final Pointer elementRef = AXUIElement.INSTANCE.AXUIElementCreateApplication(pid);
// HELP: attribute should be of type CFStringRef
final String attribute = "AXWindows";
PointerByReference value = new PointerByReference();
final int error = AXUIElement.INSTANCE.AXUIElementCopyAttributeValue(elementRef, attribute, value);
if (error == 0) {
System.out.println("value = " + value);
} else {
System.out.println("Failure: " + error);
}
}
}
Quelle est la définition de 'CFStringRef' dans votre code java? Est-ce quelque chose qui dérive de 'Structure' ou' Pointer'? –