国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

在VB中取得Windows的當前目錄

2019-11-18 17:55:08
字體:
來源:轉載
供稿:網友
很多情況下我們需要在程序中確定當前Windows的目錄,VB中自身并沒有這樣的函數,但我們可以借助WindowsAPI來達到目的,這個關鍵的函數就是:Kernel32中的GetWindowsDirectory。

  首先要在新建的程序中加入一個Module,在該Module中作如下聲明:

DeclareFunctionGetWindowsDirectoryLib“kernel32”Alias“GetWindowsDirectoryA”(ByVallpBufferAsString,ByValnSizeAsLong)AsLong
  
  這里的幾個參數說明一下:lpBuffer是一個字符串,用以返回Windows的目錄值(實際上是一個指針),這個目錄值不帶反斜杠的,比如C:/Windows,但有一種情況例外:當Windows安裝在根目錄下時返回反斜杠,比如C:/;第二個參數是前一個字串的長度,你得告訴系統為返回值預留的字串的最大長度(其實這個參數實在有些雞肋的感覺);函數的返回值,在成功的情況下是目錄字符串的長度,在不成功時返回NULL值,還有一種情況,就是返回值超出預留的串長度,那么該函數就返回實際值應有的長度。

  函數說明完畢,可以看到,為了防止出錯情況,函數引入了nSize參數,但只要使用下述經典的取目錄代碼,可保證程序平穩運行。

PublicFunctionMyGetWinDirectory()AsString
  DimsBufferAsString
  DimlSizeAsLong
  sBuffer=String(255,0)
  lSize=GetWindowsDirectory(sBuffer,Len(sBuffer))
  sBuffer=Left(sBuffer,lSize)
  sBuffer=sBuffer+“/”
  MyGetWinDirectory=sBuffer
EndFunction
  
  這里程序首先為字符預留了255Bytes,應該是足夠了,不會有人用這么長的Windows目錄名的,更重要的是超出255的長文件名Windows是不支持的;然后調用GetWindowsDirectory函數,通過返回值lSize截取緩沖區中有用的部分重新定義sBuffer;最后再加上反斜杠,形成完整的路徑名。

  現在你可以試一下你的新函數:在窗體Form1中加入一個文本框Text1,然后再加入一個命令鍵Command1,在Command1_Click()事件中加入以下代碼:

 PRivateSubCommand1_Click()
  Text1=MyGetWinDirectory
  MsgBoxText1
 EndSub
 
  最后運行程序,占擊一下Command1,看一下實際的運行效果。

以上程序在中文Windows98,VB6中通過。

->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 深水埗区| 吐鲁番市| 波密县| 灵丘县| 梅河口市| 龙井市| 五华县| 海城市| 静宁县| 宜兰市| 岑巩县| 克山县| 岗巴县| 龙井市| 交口县| 广饶县| 六安市| 长乐市| 曲沃县| 大厂| 乐至县| 荆州市| 仪征市| 亚东县| 石嘴山市| 项城市| 阿克| 平江县| 涞源县| 卓资县| 安陆市| 万源市| 汉中市| 蕉岭县| 德庆县| 平山县| 滨州市| 比如县| 鹤山市| 云龙县| 开封县|