清屏函数_Java使⽤JNA在Java中实现cls(cmd清屏)功能
作者:庄周de蝴蝶
出⾃:掘⾦
原⽂:juejin.im/post/6876454367332368392
编写 dll⽂件
由于本⽂不是专门讲解如何编写dll⽂件的,⽽且我也不是⼀个专业的C家族语⾔程序员,因此下⾯我就开始直接通过代码来展⽰
⾸先打开VS2019,然后选择创建新项⽬,搜索并并选择具有导出项的(DLL)动态链接库,然后点击下⼀步:
然后配置⾃⼰的项⽬⽬录以及项⽬名,点击创建即可:
查看项⽬结构,可以发现已经默认帮我们创建了⼀些样例代码,我们就不做修改了,然后我们开始添加⾃⼰的cls功能,为了之后的演⽰效果,我们另外再加⼀个打印Hello, world!的函数。
⾸先到clsscreen.cpp⽂件(这个根据你上⼀步中的项⽬名不同会不同的名字):
我们添加了如下的代码:
#include <stdlib.h>
#include <iostream>
using namespace std;
CLSSCREEN_API void cls() {
system("cls");
}
CLSSCREEN_API void sayHello() {
cout << "Hello, world!";
}
然后我们再打开clsscreen.h(与上同理,可能问因为你和我的项⽬名不同⽽是不同的名称)⽂件进⾏修改:
我们添加的代码如下:
extern "C" CLSSCREEN_API void cls();
extern "C" CLSSCREEN_API void sayHello();
然后我们就可以⽣成dll⽂件啦!
⾸先先按下图所⽰进⾏修改:
然后点击⽣成选择⽣成解决⽅案即可。
然后我们就可以在我们项⽬路径下的x64 -> Release⽂件夹下到我们⽣成的dll⽂件:
引⼊JNA
为了让减少学习的负担,我们就只创建普通的Java项⽬,不再去创建Maven项⽬了。⾸先我们需要引⼊两个jar包,并将我们⽣成的dll⽂件加⼊到项⽬中:
java jna然后编写我们的交互接⼝代码:
public interface ClsScreen extends Library {
ClsScreen DLL = Native.Property("user.dir") + "/clsscreen.dll", ClsScreen.class);
void cls();
void sayHello();
}
然后我们就可以开始使⽤我们的cls和sayHello函数啦!
⾸先测试sayHello函数:
成功了,然后我们再测试我们的主⾓cls函数,⾸先我们先编写我们的测试代码:
public class Demo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输⼊你的名字: ");
System.out.println("欢迎你, " + sc.next());
System.out.println("是否清屏?(y/n)");
if (Objects.(), "y")) {
ClsScreen.DLL.cls();
}
System.out.println("是否退出?(y/n)");
if (Objects.(), "y")) break;
}
}
}
然后就开始在IDEA中的Terminal窗⼝中测试(因为直接使⽤IDEA的运⾏窗⼝使⽤cls并没有清屏效果,⽽是⼀个乱码):
当我们输⼊y并回车后,就会被清屏了:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论