2012-02-10 161 views
4

我是JNA的新手,我有这个代码,它应该通过调用win7中的dll文件来阻止输入。但是当我运行这个代码时,什么都没有发生。没有编译错误,我不知道为什么它不会阻止我的键盘和鼠标。请指导我。禁用键盘和鼠标

public class BlockInput { 
    public static void main(String[] args) { 
     NativeLibrary lib = NativeLibrary.getInstance("user32"); 
     Function fun = lib.getFunction("BlockInput"); 
     System.out.println("Lib :" + lib + ".\nFun " + fun + "."); 
     fun.invoke(new Object[]{Boolean.TRUE}); 
     try { 
      Thread.sleep(10000); 
     } catch(InterruptedException ie) {} 
     lib.dispose(); 
    } 
} 

编辑:With Native.getLastError();我开始知道,访问dll文件的小丑我收到错误5(拒绝访问)。是否有任何可能的方式获得访问权限,以便我可以使其工作?

+1

检查返回值。如果它是0(零),那么出错了,你应该通过GetLastError得到错误代码。请参阅http://msdn.microsoft.com/en-us/library/windows/desktop/ms646290%28v=vs.85%29.aspx – belgther 2012-02-10 09:55:36

+0

@belgther亚感谢我得到了错误号。 5(拒绝访问)..你可以告诉我,如果有任何可能的方式获得访问。 – xyz 2012-02-10 10:31:00

回答

2

如果您在Windows Vista或Windows 7上运行,则可能需要以管理员身份运行该程序。制作一个运行Java类的批处理文件,使事情变得更简单。

+0

尝试过但尚未解决:( – xyz 2012-02-11 07:34:23