【实例】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);
}
}
}
|
相关推荐
本例子中实现在c#中调用由vb生成的dll文件(com调用)例子由两个主要步骤组成:一 ...二 是在c#中引入步骤一中生成的dll,然后生成实例调用步骤一:首先在vb中新建一个ActiveX DLL 工程,然后在类模块文件中填入以下代
java 调用delphi写的dll的全套资料,可运行
VB读取磁盘序列号,简单操作,适合新手加在一些小程序里面。相当好的哟,呵,
亲测可用,java 成功调用dll函数。包含调用回调函数,springboot版本。最近由于公司业务需要,要调用dll文件,用JNA调用。
java调用c INI接口实例 调用c dll.rar
VB封装DLL实例VB封装DLL实例VB封装DLL实例VB封装DLL实例VB封装DLL实例VB封装DLL实例VB封装DLL实例
VBA调用dll是指定路径的,如果该路径下没有想调的dll怎么办,本文给出了一个解决方法
vb调用VC DLL 实例 希望对初学者有用。 包括vc写的dll vb 调用,有源代码。
这个实例,展示了VB调用Dll,vb写DLL(只要在"工程"->"引用"->引用进去就可以了)
自己用VC++编的读取CPU序列号例子,很好用
VB获取硬盘物理序列号 dll调用 带有演示实例 不错的
这是java采用jni技术调用dll(动态链接库的一个demo),不需要任何改动,自己可以用,很适合初学者
java调用C++写的dll的实例,希望对大家有帮助!
vs vc6 c工程,读取cpu的id号序列号显示在屏幕的实例例子,适合各种电脑cpu,intel amd实测亲测通过, 这个例子用c来实现,其中嵌套有标准的x86汇编语言,vc ide中汇编,可以在这里学习pc vc6.0中嵌入汇编的例子,...
jna调用dll实例,包含jna.jar包,有详细的调用过程注释,包括调用时的中文乱码处理。本实例还提供了32位和64位的dll试用文件。
Java调用dll实例,这里包含了jacob+jawin+jna+jnative方法在内的各种资源以及demo,有许多都是CSDN中的下载资源。由于本人也是新手,为了下载关于调用dll的相关资源消耗了大量积分,特此将手中资源进行汇总,为了方便...
实例中演示了各种参数形式的DLL函数调用,如:基本数据类型、基本数据类型的指针和引用、结构体、结构体的指针和引用、函数指针和回调函数、字符串指针、输入数组、输出数组等,非常实用。
1.java调用动态链接库实例 2.包含so库的生成实例 3.java调用so的实例
用C++调用C#实例代码,C#封装为DLL。
java调用dll实例代码