在 Windows XP 上的 Java 应用程序 (JRE 1.5.0_12) 中,我调用了本机方法:
public native int attachImage( ... );
...它存在于 Visual C++ 6.0 .dll 中。它显示一个应用程序模式窗口。问题是,当这个窗口有焦点时,应用程序的托盘图标不响应鼠标点击。这是一个问题,因为当显示此窗口时,用户经常切换到另一个应用程序以选择要附加的图像,然后想要恢复此应用程序。
在 Windows XP 上的 Java 应用程序 (JRE 1.5.0_12) 中,我调用了本机方法:
public native int attachImage( ... );
...它存在于 Visual C++ 6.0 .dll 中。它显示一个应用程序模式窗口。问题是,当这个窗口有焦点时,应用程序的托盘图标不响应鼠标点击。这是一个问题,因为当显示此窗口时,用户经常切换到另一个应用程序以选择要附加的图像,然后想要恢复此应用程序。
您使用的是什么 GUI 包?
您应该能够在不诉诸 JNI 调用的情况下实现这一点。
例如,在 SWT 中,您可以像这样打开应用程序模式 shell:
Shell shell = new Shell(display,SWT.APPLICATION_MODAL);
对于摇摆,这将是:
dialog.setModalityType(Dialog.ModalityType.APPLICATION_MODAL);
您的 attachImage 方法是否未将父窗口正确设置为您的 java 应用程序窗口?获得一个 hwnd 可能很棘手(GetForegroundWindow/etc?)但它可能是必要的吗?
另外,为什么图像部分需要是JNI?这可能会帮助我们找到一个完全避免 JNI 部分的解决方案?