Java通过Jnative调用windows API接口学习总结

来源:互联网 发布:英雄联盟单机版mac 编辑:程序博客网 时间:2024/06/05 00:55

前几天在做一个自动测试wifi性能的工具,由于之前没做过,于是在万能的互联网找各种资料,折腾了几天,总算是做出来了。

在这里算是整理总结一下吧。

工具是在netbeans上开发的,用java写的。我要实现的功能是去获取电脑网卡中的wifi列表,然后逐个自动连接,测试,断开,连接下一个。

由于java并没有封装wlan相关的接口,于是需要去调用windows API的接口;但是又不能直接去调用,需要通过JNATIVE去调。

一开始我直接通过jnative去调windows WLAN的接口,但是有个问题,从Java传参到windows API接口很容易出错。于是又换了个方法,先用C++对windows WLANAPI接口进行一层封装,参数设为java层容易识别的参数,比如string,int等,然后再通过jnative去调我们封装好的方法。


补充一点:在发布软件的时候,如果在没有安装VS的电脑上,会识别不到我们生成的DLL文件从而导致报异常。这个问题我们可以这么解决:将C++生成DLL的项目包拷到工具目录下,然后再Java层修改,让它直接去调用项目包下的dll文件。


以下是我找的一些比较有用的资料:

关于wlanapi的:

0.最有用的资料,微软的windows API接口说明
https://msdn.microsoft.com

1.C#使用Managed Wifi API连接带密码的SSID .
http://blog.csdn.net/much0726/article/details/50686465


2.VC++玩转Native Wifi API
http://blog.csdn.net/lincyang/article/details/34430939/


3.Native wifi API使用 ,接口简介
http://blog.csdn.net/whatday/article/details/41518949


4.Native Wifi 中 WlanSetProfile 出现1206错误的几种可能及解决方法
http://blog.csdn.net/ytrock/article/details/48272371

5.C#编程使用Managed Wifi API连接无线SSID
http://blog.csdn.net/m593192219/article/details/9363355


关于JNATIVE使用:

1.JAVA调用DLL,Java调用DLL的常用方法
http://www.codeweblog.com/%E5%AD%A6%E4%B9%A0jna-jnative%E4%B8%AA%E4%BA%BA%E6%80%BB%E7%BB%93/


2.JNative使用深入解析——基本编程
http://fenger-chui.iteye.com/blog/1154435


关于DLL的封装

1.C/C++中生成和使用DLL 
http://blog.sina.com.cn/s/blog_4aa8874401016vfe.html


2.C++ dll调用-动态(显式) 传参调用
http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html

0 0
原创粉丝点击