`

实例说明java调用vb的dll(读取cpu序列号)

阅读更多

实例说明java调用vb的dll(读取cpu序列号)

2007-07-06 16:20

 

 

【实例】java调用dll的文档搜了不少,发现都不完整,或者说的不够详细,这里通过自己的实际操作,并将过程做了整理,通过实例说明java如何用jacob调用dll里的函数。

由于某系统加密需要,需要实现从dll里实现某些功能(比如获取当前CPU序列号),并在Java中调用该函数。

(一)准备工作:需要用到文件有:jacob.dll和jacob.jar分别放到jdk/bin下和class_path下。文件下载地址:

(二)建立一个VB的Activex Dll 工程,命名为名为getCPU,自动生成Class1文件(工程名字和类名建议用英文名,以防调用时编码出问题),并添加代码如下:

Private Type OSVERSIONINFO

                    dwOSVersionInfoSize     As Long

                    dwMajorVersion     As Long

                    dwMinorVersion     As Long

                    dwBuildNumber     As Long

                    dwPlatformId     As Long

                    szCSDVersion     As String * 128                     '       Maintenance     string     for     PSS     usage

    End Type

    Private Declare Function GetVersionEx Lib "kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long

    Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As Long) As Long

    

    Public Function GetCPUid(para As String) As String

    

            On Error GoTo doError

            

            Dim len5       As Long, aa         As Long

            Dim cmprName       As String

            Dim Computer       As String

            Dim CPUs       As Object, MyCpu         As Object

            Dim osver       As OSVERSIONINFO

            Dim SerialNo       As String

    

            '取得Computer     Name

            cmprName = String(255, 0)

            len5 = 256

            aa = GetComputerName(cmprName, len5)

            cmprName = Left(cmprName, InStr(1, cmprName, Chr(0)) - 1)

            Computer = cmprName                       '取得CPU端口号

            Set CPUs = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & Computer & "\root\cimv2").ExecQuery("select     *     from     Win32_Processor")

            For Each MyCpu In CPUs

                    SerialNo = MyCpu.ProcessorId

                    Exit For

            Next

            GetCPUid = SerialNo

            Exit Function

doError:

            GetCPUid = ""

      End Function

保存后编译为getCPU.dll 并复制到Windows/System32下。

(三)将dll导入为com组件

运行命令:regsvr32 C:\windows\system32\getCPU.dll 显示成功导入。

(四)建立测试Java文件,内容如下:

package test;

import com.jacob.activeX.ActiveXComponent;

import com.jacob.com.*;

public class CallDll {

public static void main(String args[]) {

    ActiveXComponent app = new ActiveXComponent("getCPU.Class1");

    Dispatch mycom = (Dispatch) app.getObject();

    if(mycom!=null){

     Variant result = Dispatch.callN(mycom, "GetCPUid", new String[]{""});

     System.out.print(result);

    }

}

}

 

 

来自:http://luohonghong.blog.163.com/blog/static/783120582009517253324/

分享到:
评论

相关推荐

    VB取得CPU序列号 取得CPU序列号

    在IT领域,CPU序列号是计算机处理器的一个独特...以上就是VB获取CPU序列号的相关知识,包括VB的基础、API调用、系统信息访问以及如何处理返回的数据。在实际编程中,开发者可以根据具体需求进行相应的调整和优化。

    一个读取硬盘序列号与CPU序列号的DLL.rar

    标题中的“一个读取硬盘序列号与CPU序列号的DLL.rar”表明这是一个包含动态链接库(DLL)文件的压缩包,该DLL具有读取计算机硬件关键标识信息的能力,特别是硬盘序列号和CPU序列号。在Windows操作系统中,DLL是可...

    c#调用vb dll

    本例子中实现在c#中调用由vb生成的dll文件(com调用)例子由两个主要步骤组成:一 ...二 是在c#中引入步骤一中生成的dll,然后生成实例调用步骤一:首先在vb中新建一个ActiveX DLL 工程,然后在类模块文件中填入以下代

    VB调用dll读取身份证信息例子

    在这个例子中,"VB调用dll读取身份证信息"是一个典型的案例,它涉及到如何通过VB程序来操作读卡器读取第二代居民身份证的信息。下面将详细介绍这个过程及其相关知识点。 首先,了解身份证读卡器的工作原理。第二代...

    C语言调用VBdll

    标题中的"C语言调用VBdll"指的是在C或C++编程环境中,如何使用动态链接库(DLL)的方式来调用由Visual Basic编写的函数或方法。VBdll是指使用Visual Basic编译生成的动态链接库,它封装了特定的功能,可以被其他编程...

    java调用C#封装的dll方法

    ### Java调用C#封装的DLL方法 #### 第一种方法:Java利用JNA进行调用 **背景介绍:** 为了实现Java与C#之间的交互,一种常用的方式是通过调用C#封装的DLL文件来完成特定功能。这种方法涉及到.NET Framework与Java...

    VB读取磁盘序列号操作实例

    在VB(Visual Basic)编程中,读取磁盘序列号是一项常见的任务,特别是在开发系统相关的应用程序时。磁盘序列号是硬盘驱动器的唯一标识符,由制造商在生产时...希望这个实例对你理解和应用VB读取磁盘序列号有所帮助。

    VB6.0调用C# Dll解决方法

    本文将详细解释如何使用VB6.0调用由C#编写的DLL动态链接库,以及在这一过程中涉及到的关键步骤和知识点。 首先,我们要了解VB6.0和C#之间的差异。VB6.0是基于COM(Component Object Model)技术的,而C#是.NET框架...

    JAVA调用DLL方法 JAVA调用DLL方

    ### JAVA调用DLL方法 在跨平台开发领域中,Java作为一种强大的编程语言,因其具有良好的移植性和跨平台性而被广泛使用。然而,在某些特定情况下,我们可能需要调用本地库(例如DLL文件)来实现特定功能或提高性能。...

    亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。

    Java调用DLL函数是跨平台编程中的一种常见需求,特别是在Java与C/C++代码交互时。JNA(Java Native Access)是Java平台上的一个库,它允许Java代码直接调用本机库(如DLL文件)的函数,而无需编写JNI(Java Native ...

    读取CPU序列号例子(VC)

    本文将深入探讨如何使用VC++(Visual C++)编程语言来读取CPU序列号,以及相关的技术细节。 首先,我们需要了解CPU序列号获取的基本原理。在Windows系统中,可以使用Intel的CPUID指令来获取CPU的相关信息,其中包括...

    VB调用C# Dll文件

    在IT领域,跨语言通信是常见的需求之一,本篇文章主要探讨如何在VB6.0环境中调用C#编写的Dll文件。VB6.0和C#属于不同平台,但通过COM(组件对象模型)和.NET Framework的支持,可以实现两者之间的交互。 首先,我们...

    在VC客户端调用vb的dll.rar_VB VC DLL_VB调用DLL_VB调用VC_vc 调用 dll_vc调用vb的DLL

    本示例中的压缩包提供了关于如何在VC客户端应用程序中调用VB编写的DLL函数的实例。 首先,我们需要了解VB和VC之间调用DLL的基本原理。VB和VC都是Microsoft开发的编程环境,但它们的语法和底层实现有所不同。VB使用...

    java用JNA调用dll实例,包含各种参数调用

    你需要定义一个接口,该接口的每个方法对应DLL中的一个函数,然后使用`NativeLibrary`类加载DLL,并将接口实例化,这样就可以在Java中直接调用DLL函数了。 1. **基本数据类型**:JNA支持Java的基本数据类型如int、...

    C++调用vb6.0制作的Activex DLL

    4. **创建对象**:使用`CoCreateInstance`函数实例化VB6.0生成的ActiveX DLL中的类。这个函数会返回一个指向接口的指针,你可以通过这个指针调用DLL中的方法。 5. **调用DLL方法**:通过接口指针调用ActiveX DLL的...

    java调用c INI接口实例 调用c dll.rar

    Java调用C INI接口实例,以及通过Java调用C DLL是跨语言编程中的常见应用场景。这主要涉及到Java的JNI(Java Native Interface)技术,它允许Java代码与本地(操作系统级)代码进行交互,比如C/C++库。下面将详细...

    利用js,调用VB打包dll文件,内有vb程序源码,和实例

    本话题主要探讨如何通过JavaScript调用VB编译的DLL(动态链接库)文件,以及如何将VB程序打包成CAB( Cabinet)文件供网页使用。下面我们将深入探讨这些知识点。 首先,DLL是Windows操作系统中的一个重要组件,它...

    vb6调用C#Dll函数

    4. 在VB6项目中创建C#接口的实例,并调用其方法。 这种方式虽然可以让VB6利用C#的功能,但由于涉及到COM互操作,可能会遇到类型转换和内存管理等问题,所以在实际应用时要特别注意兼容性和性能。

    vb调用VC DLL 实例

    本实例详细介绍了如何在VB中调用VC++编写的DLL。 首先,理解DLL是什么至关重要。DLL是一种可执行文件,它包含可由多个程序同时使用的代码和数据。这样可以减少内存占用并提高系统效率。VC++可以创建DLL项目,而VB则...

    Jna调用dll实例

    这个实例是关于如何使用JNA来调用DLL(动态链接库)的教程,特别强调了在调用过程中可能出现的中文乱码问题以及如何解决这个问题。 首先,我们需要理解JNA的工作原理。JNA通过提供一个接口定义,让Java代码能够映射...

Global site tag (gtag.js) - Google Analytics