我已经整理了一个JNA代码,用于在Windows中安装键盘钩子(使用JNA示例).代码编译和一切,我得到了钩子安装(我成功地处理了钩子),我也可以成功卸载钩子.但是,当我按下键盘上的任意键时,回调永远不会被调用.这是我的代码(大部分是从JNA示例中获得的类型定义,直接转到"main"部分)
import com.sun.jna.IntegerType;
import com.sun.jna.Pointer;
import com.sun.jna.PointerType;
import com.sun.jna.Structure;
import com.sun.jna.FromNativeContext;
import com.sun.jna.ptr.IntByReference;
import com.sun.jna.ptr.PointerByReference;
import com.sun.jna.win32.StdCallLibrary;
import com.sun.jna.win32.StdCallLibrary.StdCallCallback;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Library;
import com.sun.jna.win32.W32APITypeMapper;
import com.sun.jna.win32.W32APIFunctionMapper;
import java.util.Map;
import java.util.HashMap;
public class HelloWorld {
static Map UNICODE_OPTIONS = new HashMap() {
{
put("type-mapper", W32APITypeMapper.UNICODE);
put("function-mapper", W32APIFunctionMapper.UNICODE);
}
};
public static class LONG_PTR extends IntegerType {
public LONG_PTR() { this(0); }
public LONG_PTR(long value) { super(Pointer.SIZE, value); }
}
public static class UINT_PTR extends IntegerType {
public UINT_PTR() …Run Code Online (Sandbox Code Playgroud) 我想让我的程序在用户按下某个快捷方式时取消隐藏主窗口。有没有办法获取全局关键事件,而不仅仅是焦点在应用程序框架内时发生的事件?