国产探花免费观看_亚洲丰满少妇自慰呻吟_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中通過。

->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 仲巴县| 陕西省| 宣武区| 漠河县| 万全县| 玉龙| 海伦市| 崇文区| 天全县| 武冈市| 新巴尔虎右旗| 保靖县| 门源| 卫辉市| 庄浪县| 东海县| 洞口县| 汝城县| 宾阳县| 和田县| 论坛| 深水埗区| 延寿县| 肇庆市| 内黄县| 宾阳县| 海安县| 泾源县| 韶关市| 页游| 鸡东县| 时尚| 威海市| 阜新| 井陉县| 阜宁县| 阳泉市| 安泽县| 长兴县| 合作市| 思茅市|