刚接触java调用动态链接库,这几天踩了不少坑。先记录下来方便以后学习,也希望可以帮助到有需要的同志。由于第一次写博客,如果写的不好或者不详细请各位大神嘴下留情,多多包涵! 首先说下背景,我本人是魔兽世界忠实玩家,偶尔写下游戏脚本。去年一直使用按键精灵,大概使用了打半年也没有没检测到。今年突然一下被封了3个账号,按键精灵(个人版普通用户)试过各种办法,隐藏进程、加壳貌似都没有用。可能我技术太菜了吧!别问我为啥不开VIP,我会告诉你我很穷吗?最近发现魔兽会检测按键精灵进程(先启动游戏再启动按键结果一样),万般无奈只好另谋出路。偶然得知java原来也可以调用dll,然后就尝试的去玩一下。接下来等待我的是一个又一个坑等着我去跳,网上关于这块资料讲的不够细,导致花费了大量时间。今天写这篇文章也是希望能帮助正在爬坑的人。接下来进入正题,通过各种途径了解到java调用dll有那么几种方法:最底层的JNI、最方便的JNA、Jawin、.jacob、Jnative。在这里就不一 一说了。在这里给个建议吧!从使用方便角度来讲,java调用标准dll建议使用JNA,为什么说标准的dll呢?那是因为有些生成的dll并不是标准的,比如我正在使用的VB写的大漠插件(dm.dll)。com组件的话就使用jacob,没得说,一会我直接上码就知道了。首先说下我遇到的问题,以大漠获取鼠标位置为例(其他类型的下面链接可以找到例子)
一、JNA 方式测试 GetMousePointWindow函数
public class DllTest { public interface Dll extends StdCallLibrary { Dll instance = (Dll) Nat