尝试将当前正在按下键的窗口的名称从 JNI C 代码发送到 java 方法时,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 在遇到上述代码段时崩溃。我知道 jvm 崩溃是由于将无效参数传递给 java 函数(通过 C 代码)。如果是这样,请解释我如何发送参数。我需要将当前窗口的标题发送到 java 函数。