如何在Java 8中使用JNA PostMessage

时间:2015-06-19 22:51:43

标签: java winapi java-8 jna

以下代码适用于较旧的Java版本,但似乎已退出Java 8。有人知道为什么会发生这种情况,以及如何解决它?

public static String notifyExternalApplication() {
    StringBuffer buf = new StringBuffer("");
    try {
        User32.HWND fusionmsg = User32.INSTANCE.FindWindow("TFusionHdtvTray","HDTV Tray");
        int wmUserPlusOffset = 0x400 + 5014;
        User32.WPARAM two = new User32.WPARAM(2L);
        User32.LPARAM zero = new User32.LPARAM(0L);
        boolean fusResult = User32.INSTANCE.PostMessage(fusionmsg, wmUserPlusOffset, two, zero);
        buf.append(" fusResult was " + fusResult + "\n");
    } catch (RuntimeException e) {
        e.printStackTrace();
        buf.append(" " + e.getMessage());
    } 
    return new String(buf);
}

编辑:当此代码在所有操作系统中运行时,它返回" fusResult是真的"。它只是在较新的Java版本中,似乎没有效果。

EDIT2: 完成研究 - 在同一系统上运行相同的代码,但使用不同版本的Java。结果发布在这里。 Clarity - 发布确切的代码并说明结果。 结果如果问题得到解答(有用) - 我自己,其他使用这种技术的程序员可以选择让他们的代码再次运行。

0 个答案:

没有答案