jna调用windows api

使用JNA调用本地函数
本文介绍如何利用Java Native Access (JNA) 库来调用本地系统的两个常用函数:GetLogicalDriveStringsA(获取逻辑盘符)和GetSystemDirectoryA(获取系统目录)。通过示例代码展示了具体的调用过程。

在我接触JNA之前一直以为调用本地链接库函数的时候一定要借助JNI或者SWT来实现,一日中无意看到JNA,发现它也可以实现这类调用,于是下回来按网站上的例子试试了 还不错,因此还有点兴趣了,于是又自己写了 2个发挥了一下。

GetLogicalDriveStringsA【获取本地系统逻辑盘符】

GetSystemDirectoryA 【获取系统目录】

public interface Kernel32 extends Library {

    Kernel32 INSTANCE = (Kernel32) Native.loadLibrary("kernel32", Kernel32.class);
  int GetLogicalDriveStringsA(int length,byte[] buffer);
    int GetSystemDirectoryA(byte[] buffer,int size);
}
 调用的方式为:

public class MainDemo ...{

    public static void main(String[] args) ...{
        Kernel32 lib = Kernel32.INSTANCE;
        byte[] buffer2=new byte[100];
        lib.GetLogicalDriveStringsA(buffer2.length/2,buffer2);
               for(byte bt : buffer2)
       ...{
            System.out.print((char)bt);
       }
         System.out.println();

        byte[] buffer = new byte[50];

 lib.GetSystemDirectoryA(buffer, 50);
          for(byte bt : buffer)
       ...{
            System.out.print((char)bt);
       }


}


}

本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/zhangjianying/archive/2008/01/25/2064911.aspx

新编WIN32API大全 内容简介 作为Microsoft 32位平台的应用程序编程接口,Win32 API是从事Windows应用程序开发所必备的。本书首先对Win32 API函数做完整的概述;然后收录五大类函数:窗口管理、图形设备接口、系统服务、国际特性以及网络服务;在附录部分,讲解如何在Visual Basic和Delphi中对其调用。 本书是从事Windows应用程序开发的软件工程师的必备参考手册。 前言 Win32 API作为 Microsoft 32位平台(包括:Windows 9x,Windows NT3.1/4.0/5.0,WindowsCE)的应用程序编程接口,它是构筑所有32位Windows平台的基石,所有在Windows平台上运行的应用程序都可以调用这些函数。 从事Windows应用程序开发,离不开对Win32 API函数的调用。只有充分理解和利用API函数,才能深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性。 近年来,随着Microsoft 32位平台的版本升级, Win32 API函数的构成、功能与调用方式都有很大的发展变化,然而,国内很少有相关的新版资料出版。为了满足广大开发人员的迫切需求,我们经过认真收集、整理素材,组织编写了这本与各种Microsoft 32位平台最新版本同步的Win32 API参考手册。 全书收录了五大类函数:窗口管理、图形设备接口、系统服务、国际特性以及网络服务。所有函数均附有功能说明、参数说明、返回值说明、备注以及引用说明。另外,在本书的第一章,我们对WiN32 API函数作了完整的概述;在附录部分,讲解了如何在Visual Basic和Delphi中对其调用。 由于篇幅较大,涉及技术内容广泛,加之时间仓促,书中难免存在不少错误或疏漏,希望广大读者给与批评指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值