在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部分的解决方案?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top