有没有人试过用jna来调用大漠插件内的方法

e9876 2013-06-13 11:34:34
我自己写了一个测试方法,但是一直报错,找不到问题在哪里,
请高手们帮忙看看吧,谢谢

public class RobotTest {
public static void main(String[] args){
test();
}

public static void test(){
String path = RobotTest.class.getResource("dm.dll").getPath();
if(path.startsWith("/")){
path = path.substring(1);
}
System.out.println("大漠插件路径:"+path);
DLibrary dm = (DLibrary) Native.loadLibrary(path,DLibrary.class);
System.out.println("大漠插件:"+dm);
long hwnd = dm.FindWindow("SWT_Window0", null);
}
public interface DLibrary extends Library{
int BindWindow(int hwnd,String display,String mouse,String keypad,int mode);
long FindWindow(String type,String title);
}
}


打印出来的结果为

大漠插件路径:F:/workspace/Test/bin/dm.dll
大漠插件:Proxy interface to Native Library <F:/workspace/Test/bin/dm.dll@53608448>
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'FindWindow': 找不到指定的程序。

at com.sun.jna.Function.<init>(Function.java:179)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:430)
at com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:410)
at com.sun.jna.Library$Handler.invoke(Library.java:205)
at $Proxy1.FindWindow(Unknown Source)
at RobotTest.test(RobotTest.java:138)
at RobotTest.main(RobotTest.java:46)


大漠插件原方法的简介

函数简介:

查找符合类名或者标题名的顶层可见窗口

函数原型:

long FindWindow(class,title)

参数定义:

class 字符串: 窗口类名,如果为空,则匹配所有. 这里的匹配是模糊匹配.

title 字符串: 窗口标题,如果为空,则匹配所有.这里的匹配是模糊匹配.

返回值:

整形数:
整形数表示的窗口句柄,没找到返回0

示例:

hwnd = dm.FindWindow("","记事本")



麻烦有经验的高手帮忙看一下吧,谢谢
...全文
523 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xujie784442670 2016-01-25
  • 打赏
  • 举报
回复
大漠是com接口要用jacob调用才可以
hl1744 2016-01-05
  • 打赏
  • 举报
回复
楼主解决了嘛
thee369 2013-09-15
  • 打赏
  • 举报
回复
调用dll需要自己写个dll来实现,不能直接调用非为java准备的dll。 自己的理解,jni需要自己写的dll里面其实实现的就是利用C来调用第三方dll,自己写的dll符合jni的约定,所以可以调用,普通第三方dll,比如大漠插件这个dll,是没法直接用java来调用的。 可以参考下面这篇文章,或者直接百度这个内容 java 调用第三方插件。 http://www.cnblogs.com/AnnieKim/archive/2012/01/01/2309567.html
银魂菌 2013-07-28
  • 打赏
  • 举报
回复
完全没头绪。。
mzisnm 2013-07-07
  • 打赏
  • 举报
回复
我用Jnative调用过大漠插件,出错原因跟你这个一样,是找不到函数
可能是因为大漠插件的dll有点复杂,看下面俩图


我不知道怎么解决,求解
也许用jni能解决。。。
e9876 2013-06-14
  • 打赏
  • 举报
回复
没有人做过的吗。。

50,528

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧