jar包怎么import jna

jar包怎么import jna,第1张

第一:具体的功能方法如果是public直接就可以用import引入该类然后调用

第二:如果这功能是类似于exe可执行文件或者打包成了jar的可执行文件,那么Java中有固定的代码可以内嵌运行已经实现功能的程序

第三:如果你说的其他程序,是指用别的语言写的,那么可以用相关工具将该Java程序打包成jar,然后安装了Java运行环境后就可以当成exe文件运用。

第四:如果仅仅只是想把已经写好的Java程序,该程序已经实现了具体功能,然后你想用其他语言来调用该功能,这就需要网上再找下有这种工具没了?Java中的JNI和JNA相关技术可以研究下,我只知道人工编写新代码。

ToolkitgetDefaultToolkit()addAWTEventListener(new AWTEventListener()

{

@Override

public void eventDispatched(AWTEvent event)

{

if(event instanceof KeyEvent)

{

KeyEvent ke=(KeyEvent)event;

if(kegetID()==KeyEventKEY_RELEASED/键盘按下后释放时触发/&&kegetKeyCode()==KeyEventVK_ESCAPE/你的键值KeyEventXXX/)

{

//你的处理方法在这,JWindow的引用怎么样

}

}

else if(event instanceof MouseEvent)

{

MouseEvent me=(MouseEvent)event;

if(megetID()==MouseEventMOUSE_RELEASED/鼠标按下后释放时触发/)

{

//你的处理方法在这

}

}

//好些呢,想监听啥就监听啥

}

}, AWTEventMOUSE_EVENT_MASK+AWTEventMOUSE_MOTION_EVENT_MASK+AWTEventMOUSE_WHEEL_EVENT_MASK+AWTEventKEY_EVENT_MASK);

如果你的窗口隐藏了,还想监听,那可能需要JNA库的支持

调用C++编译的代码能调用到库但是找不到函数,应该是因为C++编译器会破坏函数的名称。

对此,一般网上能查到两种方法解决:

用extern C ,功能是将部分代码用C编译器进行编译,因为 C编译器不会改变函数的函数名,Java中就可以用代码中的函数名调用了。

用def模板

注1:这里说的方法你需要自己去查一下,别人的文章会写得比较清楚,看完整的文章能学到更多。

注2: 对于C和C++编译器对函数名的影响,这里和你说一下如何查看:你想看看C++编译器编译的DLL的方法名可以用depends反编译程序,把dll拖进depends程序窗口,左边会有依赖树,点击最顶端你的“库名dll”,右边就能看到dll中函数被C++编译之后的名字。如下图:

用C编译的DLL:

2 用C++编译的DLL:

我感觉你这样设计有问题,JNI中java和C/C++的方法应该是保留java的方法名,当然这个不是重点,重点是你里面的参数显然不一致。ByteByReference是个对象类型,我们无法把它弄成一个指针类型,毕竟java没有指针。我的建议是,pBuffer不要作为参数,用具体的类型。pBuffer作为全局变量在别的地方初始化,这样不影响你在invoke方法里面用pBuffer来获取值。我这只是从你的描述简单的看,具体的需求我也不太清楚你要做什么,个人建议。

如果是JTable等java图形界面的组件,那么获取数据,赋值都比较简单

但是看,是要写一个Excel的辅助功能, 这对java来说还是有点麻烦了

最优建议:

Excel的功能 那么最佳的建议,是使用vba 语言进行扩展(微软出品,简单,方便,代码量极少)

其次的建议:

C/C++ 键盘钩子 , 当读取到按键F9时 ,模拟键盘的复制粘贴等 *** 作

不推荐java , 但java也能勉强凑合解决这个问题:

因为java 很难获取系统底层的按键, Robot也很有局限, 比如窗口失去焦点的时候,读取不到F9按键   所以java需要调用JNI c语言 比较繁琐 比较简单的是调用JNA了,但代码量也不少

当然了如果非要用java写,也可以,我手写了一个简单的JNA+Robot配合

效果图

以上就是关于jar包怎么import jna全部的内容,包括:jar包怎么import jna、java JWindow全屏窗口下 键盘监听、JNA 调用c++函数的出错,java能加载库,但是找不到c++写的函数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9278380.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-26
下一篇 2023-04-26

发表评论

登录后才能评论

评论列表(0条)

保存