程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VB從零開始編外掛(十二)

VB從零開始編外掛(十二)

編輯:VB綜合教程

--------------------------------------------------------------------------------------------------------------------------------------------------------

VB實現指針訪問!DLL的訪問

--------------------------------------------------------------------------------------------------------------------------------------------------------

CopyMemory函數提供了一個簡單的方法來執行C 中見解訪問運算符(*),這個運算符可以訪問被一個指針變量所指向的變量的值。
  即如有指針變量P,在C 中可以簡單的用*P來訪問,那在VB中怎麼訪問呢?

在VB中,我們可以使用CopyMemory函數別名。
  DeclareSubVBGetTargetLb"kernel32"Alias"RtlMoveMemory"(TargetAsAny,ByVallPointAsLong,ByValcbCopyAsLong)

例子:
  DimPointerAsLong
  DimTargetAsInteger
  DimiAsInteger
  i=123
  Pointer=VarPtr(i)'獲得指針
  VBGetTargetTarget,Pointer,LenB(Target)
  Debug.PrintTarget

--------------------------------------------------------------------------------------------------------------------------------------------------------

很長時間以來,都認為只能通過絕對路徑引用標准DLL中的函數。其實,你也可以用相對路徑。很簡單的,現在就嘗試一下吧。
  
  1)絕對路徑方法
  
  比如你的DLL文件位於c: estDLLdebug estDLL.dll
  
  一般來說,你需要在VB中作如下聲明
  
  DeclareSubmytestLib"c: estDLLdubug estDLL.dll"(ByValxAsLong)
  
  另外的一個變通方法是把testDLL.dll放在windows的系統目錄下,這樣,你就可以直接引用文件名了。不過,需要把一個文件放到windows系統目錄下,很是不爽!
  
  2)相對路徑方法
  
  看看我們如何用相對路徑,假設你的DLL文件位於c: estDLLdebug estDLL.dll,你的VB程序位於目錄c: estDLLvbClient
  你可以在VB程序中作如下聲明:
  
  DeclareSubmytestLib"../dubug/testDLL.dll"(ByValxAsLong)
  
  如果直接運行你的VB程序,系統會提示錯誤:找不到../dubug/testDLL.dll.
  
  為了使上面的聲明其作用,先暫時關閉你的VB工程。然後用一個文本編輯器(notepad,editplus,etc)打開工程文件(就是那個後綴是vbp的家伙),通常vbp文件由幾個部分組成。

->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved