JNIモーダルダイアログを呼び出すと、タスクバーアイコンが無効になります

StackOverflow https://stackoverflow.com/questions/303712

質問

Windows XP上のJavaアプリケーション(JRE 1.5.0_12)で、ネイティブメソッドを呼び出します:

public native int attachImage( ... );

... Visual C ++ 6.0 .dllにあります。アプリケーションモーダルウィンドウが表示されます。問題は、このウィンドウにフォーカスがある間、アプリケーションのトレイアイコンがマウスクリックに応答しないことです。これは問題です。このウィンドウが表示されると、ユーザーは多くの場合、別のアプリケーションに切り替えて添付する画像を選択し、このアプリケーションを復元したいためです。

役に立ちましたか?

解決

どのGUIパッケージを使用していますか

JNI呼び出しに頼らずにこれを実装できるはずです。

たとえば、SWTでは、次のようなアプリケーションモーダルシェルを開くことができます。

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