2017-04-11 4 views
0

J'essaye actuellement de porter le code de C# à Java. Dans le code C#, la partie panel.handle renvoie un intptr du panneau en cours. L'intptr est ensuite passé à une méthode DLL. Le code C# est le suivant:JFrame équivalent pour le pointeur de la poignée C#

IntPtr Handle = Panel1.Handle;

La même DLL doit être utilisée. J'ai trouvé quelque chose en utilisant Win32 et JNI mais je n'ai pas compris comment l'utiliser. Est-ce que quelqu'un sait le java swing équivalent à cette méthode?

+0

Peut-être que vous devriez jeter un coup d'œil à [this] (https://github.com/java-native-access/jna/blob/master/contrib/platform/test/com/sun/jna/platform/win32/ WindowUtilsTest.java) comme référence – MadProgrammer

+0

Merci pour le lien. Cela m'a beaucoup aidé à trouver la solution. –

Répondre

0

Grâce au lien dans le commentaire et à d'autres recherches, j'ai réussi à trouver l'équivalent de la propriété Handle dans C#. Voici ce que je l'ai fait à tous ceux qui fait face au même problème:

import javax.swing.*; 

    import com.sun.jna.Native; 
    import com.sun.jna.Pointer; 
    import com.sun.jna.platform.win32.WinDef.HWND; 

    public class main { 
     public static void main(String[] args) { 
      JFrame jFrame = new JFrame(); 
      final HWND hwnd = new HWND(Native.getComponentPointer(jFrame)); 
      System.out.println(hwnd); 
     } 
    } 

S'il vous plaît Notez que cela fonctionne uniquement avec des machines Windows depuis Windows seulement le concept de tout est une fenêtre et chaque fenêtre a une poignée.