現在キーが押されているウィンドウの名前を JNI C コードから Java メソッド jvm に送信しようとすると、jvm がクラッシュします。無効な引数が渡されたためだと思います。呼び出しが失敗する理由と、引数を送信する方法を説明してください。
Java メソッドのプロトタイプは次のようになります。
public void storeNameOfForegroundWindow(String windowName) {
// store in the list
}
JNI C スニペット:
jmethodID callBackToStoreWindowName = (*env)->GetMethodID(env,cls,"storeNameOfForegroundWindow","(Ljava/lang/String;)V");
TCHAR title[500];
GetWindowText(GetForegroundWindow(), title, 500);
jvalue windowName,*warr;
windowName.l = title;
warr = &title;
(*Env)->CallVoidMethodA(Env,object,callBackToStoreWindowName,warr);
上記のスニペットに遭遇すると、JVM がクラッシュします。Java 関数に無効な引数が渡されたために (C コードを介して) jvm がクラッシュすることがわかっています。その場合は、引数を送信する方法を説明してください。現在のウィンドウのタイトルを Java 関数に送信する必要があります。