實例說明java調(diào)用vb的dll(讀取cpu序列號)

          【實例】java調(diào)用dll的文檔搜了不少,發(fā)現(xiàn)都不完整,或者說的不夠詳細(xì),這里通過自己的實際操作,并將過程做了整理,通過實例說明java如何用jacob調(diào)用dll里的函數(shù)。

          由于某系統(tǒng)加密需要,需要實現(xiàn)從dll里實現(xiàn)某些功能(比如獲取當(dāng)前CPU序列號),并在Java中調(diào)用該函數(shù)。

          (一)準(zhǔn)備工作:需要用到文件有:jacob.dll和jacob.jar分別放到j(luò)dk/bin下和class_path下。文件下載地址:

          (二)建立一個VB的Activex Dll 工程,命名為名為getCPU,自動生成Class1文件(工程名字和類名建議用英文名,以防調(diào)用時編碼出問題),并添加代碼如下:

          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 LongAs Long

              

              
          Public Function GetCPUid(para As StringAs 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(2550)

                      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 并復(fù)制到Windows/System32下。

          (三)將dll導(dǎo)入為com組件

          運行命令:regsvr32 C:\windows\system32\getCPU.dll 顯示成功導(dǎo)入。

          (四)建立測試Java文件,內(nèi)容如下:

          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);

              }


          }


          }

          posted on 2010-11-05 14:18 aiaiwoo 閱讀(1026) 評論(0)  編輯  收藏 所屬分類: Java


          只有注冊用戶登錄后才能發(fā)表評論。

          網(wǎng)站導(dǎo)航:
           
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿

          隨筆分類

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 盐源县| 巨鹿县| 碌曲县| 台中市| 崇文区| 鄂尔多斯市| 玉山县| 休宁县| 建始县| 营口市| 五河县| 金堂县| 西吉县| 溧水县| 额尔古纳市| 龙井市| 龙海市| 宝丰县| 阳西县| 普格县| 内黄县| 婺源县| 灵寿县| 小金县| 蚌埠市| 安泽县| 霍州市| 延津县| 怀宁县| 贺州市| 浠水县| 长兴县| 平塘县| 大港区| 永丰县| 宁远县| 冀州市| 洪湖市| 石屏县| 无极县| 图木舒克市|