Java学习笔记 Java调用Win32 API控制鼠标活动范围
来源:互联网 发布:赛门铁克数据备份软件 编辑:程序博客网 时间:2024/05/17 09:48
今天学习Java看到Jni部分, 终于看到Java如何调用其他语言写的函数(我期待已久了…. :P)
下面把过程写下来,免得以后忘了又要是处找资料.
首先是Java写的测试类
public class TestJni
{
native void SetMouseRangle(int left, int right, int top, int bottom);
static{
System.loadLibrary("TestJni");
}
public static void main(String []args){
TestJni test = new TestJni();
test.SetMouseRangle(0,0,0,0);
test.SetMouseRangle(100,100,200,200);
}
}
SetMouseRangle用它来代替同名的本地函数,它的前面必须要有native关键字,而且它不能有函数体.这个函数是为了指定一个矩形的范围,把鼠标限定在这个矩形里面5秒钟.
static{
System.loadLibrary("TestJni");
}
是为了加载TestJni.dll的(在其他平台上动态库的后缀名不为dll,这里由系统自己判断后缀名是dll还是os等),本地的SetMouseRangle就放在这个动态库中.
然后用javac生成class文件.用,javah生成c语言的头文件.
然后打开C++编译器,新建一个win32动态链接库项目.把生成的TestJni.h头文件包含进去就行了.
然后 #include"TestJni.h"
创建一个导出函数
JNIEXPORT void JNICALL Java_TestJni_SetMouseRangle
(JNIEnv *, jobject, jint left, jint right, jint top, jint bottom)
{
RECT rect;
rect.left = left;
rect.right = right;
rect.top = top;
rect.bottom = bottom;
ClipCursor(&rect);
Sleep(5000);
ClipCursor(0);
}
ClipCursor为一个Win32 API函数,作用是把鼠标限定在传入的矩形范围内.最后要调用ClipCursor(0);
否则鼠标将一直被限定在那个矩形范围内.
然后编译,在这里处了点问题,提示找不到Jni.h,想到一个笨办法,把Jni.h的目录附加进来.我的
Jni.h所在目录为C:/Program Files/Java/jdk1.6.0/include,还要把一个目录附加进来,因为还会用到C:/Program Files/Java/jdk1.6.0/include/win32这个目录中的头文件
然后编译,将生成的dll拷贝到class所在目录,如果名字不为TestJni.dll就把它改为这个名字,就可以运行了.
- Java学习笔记 Java调用Win32 API控制鼠标活动范围
- java 调用win32 api 学习总结
- java 调用win32 api 学习总结
- Zookeeper学习笔记(二)通过Java API调用Zookeeper
- C语言调用API控制鼠标指针
- JAVA控制鼠标键盘
- Win32学习笔记——鼠标操作
- Win32学习笔记——鼠标消息
- Java Sound API 学习笔记
- Java Mail API 学习笔记
- JAVA Logging API 学习笔记
- RTC Java API 学习笔记
- Java-API学习笔记---Integer
- Java-API学习笔记---Object
- Java Sound API 学习笔记
- Java Sound API 学习笔记
- Zookeeper学习笔记--Java API
- Java学习笔记--并行API
- 解决网站URL格式过长的问题
- DES单元
- 碗不翻
- 在接口后面能不能使用new操作符
- 在PC上如何快速安装 Red Hat Linux
- Java学习笔记 Java调用Win32 API控制鼠标活动范围
- 用QT实现Wake On Lan功能(附全部程序源码)
- 回应我的指责:学生来邮件把我痛骂了一通
- 空(标识)接口的重要性
- Eclipse中常用的快捷键(转)
- URL重写之UrlRewriter
- C# 有趣的继承代码
- Visual C#常用函数和方法集汇总
- 透视企业数据 - 办公自动化软件的新发展