`

实例说明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调用、系统信息访问以及如何处理返回的数据。在实际编程中,开发者可以根据具体需求进行相应的调整和优化。

    c#调用vb dll

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

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

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

    JAVA调用DLL方法 JAVA调用DLL方

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

    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使用...

    VBA调用dll实例

    ### VBA调用DLL实例详解 #### 一、引言 在Visual Basic for Applications (VBA)编程中,经常需要扩展其功能以实现更复杂的任务。一种常见的做法是通过调用动态链接库(Dynamic Link Library,简称DLL)来实现。...

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

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

    用JAVA读取硬盘序列号

    在Java编程环境中,读取硬盘序列号是一项常见的需求,特别是在软件授权、系统识别或设备管理等领域。硬盘序列号是每个硬盘制造商为生产出的每个硬盘分配的唯一标识符,类似于设备的身份证。以下将详细解释如何使用...

    C# 读取机器码,CPU序列号,生成注册码类

    值得注意的是,在某些情况下,可能需要处理多个CPU的情况,此时可以通过循环遍历所有实例来获取每个CPU的序列号,并进行适当的合并。 ### 四、合成机器码 接下来,需要将获取到的硬盘序列号和CPU序列号合并成一个...

    java实例,通过jawin实现对dll中方法的调用

    本实例主要介绍如何使用Java和jawin库来实现DLL方法的调用。 jawin是一个开源项目,它提供了一种在Java中直接调用DLL库的方法。jawin.jar包含了Java接口,jawin.dll则是Java与DLL交互的桥梁,它实现了Java和C/C++...

    CPU序列号读取 c++

    在Windows环境下,使用C++编程语言来获取CPU序列号是一个涉及到操作系统接口调用和硬件信息读取的技术问题。CPU序列号通常被视为一个独特的标识符,它由CPU制造商在生产过程中赋予,可以用来区分不同的处理器。以下...

    JNI实例 Java调用DLL c++调用Java

    总之,JNI实例“Java调用DLL c++调用Java”是一个实用的学习资源,它详细解释了如何利用JNI进行Java与C++的交互,无论是将本地库引入Java程序还是将Java功能嵌入C++应用。通过实践这些例子,开发者能够深入理解JNI的...

    java调用delphi动态库的实例

    这个实例对于理解Java的JNI(Java Native Interface)和Delphi的DLL导出函数至关重要。 首先,我们需要了解Java的JNI机制。JNI是Java平台提供的一种接口,允许Java代码和其他语言写的代码进行交互。当Java程序需要...

    [测试通过]JAVA调用第三方DLL的简单方法:JNA及DEMO

    在IT行业中,有时我们需要在Java程序中调用第三方的DLL(动态链接库)文件,这通常是C或C++编写的库。Java Native Access (JNA) 是一个流行的开源框架,它允许Java代码直接调用本机库函数,而无需编写JNI(Java ...

    java调用com组件实例

    Java调用COM组件是Java与非Java环境交互的一种方式,主要应用于Windows平台,因为COM(Component Object Model)是微软提出的一种面向对象的技术,主要用于构建Windows应用程序和服务。在Java中调用COM组件,可以...

    vb.net 调用DLL

    在IT领域,特别是软件开发中,跨语言编程和组件重用是常见的需求,而VB.NET调用DLL(动态链接库)则是实现这一需求的关键技术之一。以下是对如何使用VB.NET调用DLL的深入解析,包括理论知识、实践操作以及常见问题...

    vb调用c#的dll

    ### VB调用C# DLL的详细指南 在跨语言编程中,经常需要让不同语言编写的组件能够相互协作。在.NET框架中,VB.NET和C#是两种常用的开发语言,它们各自有着不同的语法和特性,但都能够在同一平台上运行。本文将详细...

    java调用dll

    本文将基于提供的“java调用dll实例代码”,深入探讨如何在Java中集成DLL,包括关键步骤、涉及技术以及具体实现细节。 #### 核心概念:JNI与DLL - **JNI(Java Native Interface)**:是Java平台标准的一部分,它...

    ActiveX DLL免注册调用(VB)

    VB(Visual Basic)是Microsoft开发的一种面向对象的编程语言,它支持对ActiveX DLL的调用。在VB中,可以使用CreateObject或RegisterFreeLibrary等方法来加载和使用未注册的ActiveX DLL。这种方法的关键在于,开发者...

Global site tag (gtag.js) - Google Analytics