VB取得系統路徑的方法

程式設計者在設計程式時,常常會需要用到一些常用的系統路徑。例如:「桌面」路徑、「我的文件」路徑、「Program Files」路徑、「WINDOWS」路徑。而要如何才能取得這些路徑的位址呢?這正是本篇教學所要講的。

為了方便訪客尋找資料,我就來弄個教學書籤好了^^

快速書籤:

1.取得VB程式的自身路徑

2.取得Windows的路徑

3.取得WindowsSystem的路徑

4.取得桌面路徑

5.取得Program Files路徑

6.取得我的文件路徑

7.取得Windows所在的磁碟機代號

取得VB程式的自身路徑

這是一個很簡單的動作,App(應用程式本身)裡面原本就有這個屬性方法了。程式碼如下:

1
2
3
Sub GetMeDir() '取得自身路徑
    Print "本程式的路徑為:"; App.Path
End Sub

補充資料:

App.Path:取得程式自身路徑

App.EXEName:取得程式檔名

App.EXEName:取得程式檔名

App.PrevInstance:取得程式是否已開啟(傳回布林值,True為開啟,False反之)

App.Major:傳回程式版本x.x.x

App.Minor:傳回程式版本x.x.x

App.Revision:傳回程式版本x.x.x

取得程式版本寫法:

1
2
3
Sub GetRevision() '取得自身版本
    Print "本程式的版本為:"; App.Major & "." & App.Minor & "." & App.Revision '版本格式:x.x.x
End Sub

取得Windows的路徑

利用「GetWindowsDirectory」API函數可以輕易做出這個功能,其宣告方法如下:

Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

參數說明:

lpBuffer:傳入足夠長度的字串,然後再傳回Windows的所在目錄。建議配置的字串長度是(MAX_PATH=)260。

nSize:傳入的字串長度。

GetWindowsDirectory傳回值若等於0則表示取得Windows路徑失敗,若不等於零則表示路徑取得成功。此外,GetWindowsDirectory的傳回值就是路徑的長度。

程式碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub GetWDir() '取得WINDOWS路徑
    Dim Buffer As String '作為lpBuffer
    Dim rtn As Long '儲存GetWindowsDirectory的return值
    Const MAX_PATH = 260 '設定最大字串長度
 
    Buffer = Space(MAX_PATH) '讓Buffer儲存MAX_PATH(260)個空白字元
    rtn = GetWindowsDirectory(Buffer, Len(Buffer)) 'GetWindowsDirectory(lpBuffer,nSize)
    If rtn = 0 Then '判斷GetWindowsDirectory是否有取得路徑
        Print "WINDOWS路徑取得失敗!" '取得失敗提示
    Else '如果rtn不為0
        Print "WINDOWS路徑為:"; Buffer 'Buffer經過GetWindowsDirectory函數處理後,儲存的字串已為WINDOWS路徑
    End If
End Sub

取得WindowsSystem的路徑

利用「GetSystemDirectory」API函數可以輕易做出這個功能,其宣告方法如下:

Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long

參數說明:

lpBuffer:傳入足夠長度的字串,然後再傳回Windows的所在目錄。建議配置的字串長度是(MAX_PATH=)260。

nSize:傳入的字串長度。

GetSystemDirectory傳回值若等於0則表示取得System路徑失敗,若不等於零則表示路徑取得成功。此外,GetSystemDirectory的傳回值就是路徑的長度。

程式碼如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
Sub GetSDir() '取得SYSTEM路徑
    Dim Buffer As String '作為lpBuffer
    Dim rtn As Long '儲存GetSystemDirectory的return值
    Const MAX_PATH = 260 '設定最大字串長度
 
    Buffer = Space(MAX_PATH) '讓Buffer儲存MAX_PATH(260)個空白字元
    rtn = GetSystemDirectory(Buffer, Len(Buffer)) 'GetSystemDirectory(lpBuffer,nSize)
    If rtn = 0 Then '判斷GetSystemDirectory是否有取得路徑
        Print "SYSTEM路徑取得失敗!" '取得失敗提示
    Else '如果rtn不為0
        Print "SYSTEM路徑為:"; Buffer 'Buffer經過GetSystemDirectory函數處理後,儲存的字串已為SYSTEM路徑
    End If
End Sub

取得桌面路徑

要做到這個功能,可能以讀取登錄檔的方法比較簡單。我們要建立一個「wscript.shell」Object,利用「.regread」來讀取登錄擋。桌面路徑應該位於登錄擋「HKEY_CURRENT_USERSoftwareMicrosoftWindows

CurrentVersionExplorerShell Folders」的Desktop字串值裡。

sshot-1

程式碼如下:

1
2
3
4
5
6
7
Sub GetDeskDir() '取得桌面
    Dim wshshell As Object '宣告wshshell為一個Object
    Dim strDesktop As String 'strDesktop變數儲存wshshell.regread的傳回值
    Set wshshell = CreateObject("wscript.shell") '將"wscript.shell"載入到wshshell內
    strDesktop = wshshell.regread("HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersDesktop") '取得桌面路徑
    Print "桌面路徑為:"; strDesktop
End Sub

補充:

Startup字串值存放的是「啟動」路徑,若要讓某檔案開機時自動執行,就可以使用這個路徑。

取得我的文件路徑

要做到這個功能,可能以讀取登錄檔的方法比較簡單。我們要建立一個「wscript.shell」Object,利用「.regread」來讀取登錄擋。桌面路徑應該位於登錄擋「HKEY_CURRENT_USERSoftwareMicrosoftWindows

CurrentVersionExplorerShell Folders」的Personal字串值裡。

程式碼如下:

1
2
3
4
5
6
7
Sub GetPersonalDir() '取得我的文件路徑
    Dim wshshell As Object '宣告wshshell為一個Object
    Dim strPersonal As String 'strPersonal變數儲存wshshell.regread的傳回值
    Set wshshell = CreateObject("wscript.shell") '將"wscript.shell"載入到wshshell內
    strPersonal = wshshell.regread("HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionExplorerShell FoldersPersonal") '取得我的文件路徑
    Print "我的文件路徑為:"; strPersonal
End Sub

取得Program Files路徑

要做到這個功能,可能以讀取登錄檔的方法比較簡單。我們要建立一個「wscript.shell」Object,利用「.regread」來讀取登錄擋。桌面路徑應該位於登錄擋「HKEY_LOCAL_MACHINESoftwareMicrosoftWindows

CurrentVersion」的ProgramFilesDir字串值裡。

程式碼如下:

1
2
3
4
5
6
7
Sub GetProDir() '取得Program Files路徑
    Dim wshshell As Object '宣告wshshell為一個Object
    Dim strPro As String 'strPro變數儲存wshshell.regread的傳回值
    Set wshshell = CreateObject("wscript.shell") '將"wscript.shell"載入到wshshell內
    strPro = wshshell.regread("HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionProgramFilesDir") '取得Program Files路徑
    Print "Program Files路徑為:"; strPro
End Sub

取得Windows所在的磁碟機代號

有兩種方法可以做到此功能:第一種是用「GetWindowsDirectory」API函數先取得WINDOWS路徑,接著再把路徑中的磁碟機代號取出。第二種是直接取得登錄檔的字串值。兩種方法均寫成程式碼,程式如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Sub GetSysDrive1() '取得Windows所在的磁碟機代號方法一
    Dim Buffer As String '作為lpBuffer
    Dim rtn As Long '儲存GetWindowsDirectory的return值
    Const MAX_PATH = 260 '設定最大字串長度
 
    Buffer = Space(MAX_PATH) '讓Buffer儲存MAX_PATH(260)個空白字元
    rtn = GetWindowsDirectory(Buffer, Len(Buffer)) 'GetWindowsDirectory(lpBuffer,nSize)
    If rtn = 0 Then '判斷GetWindowsDirectory是否有取得路徑
        Print "磁碟機代號取得失敗!" '取得失敗提示
    Else '如果rtn不為0
        Print "Windows所在的磁碟機代號為:"; Left(Buffer, 2) 'Buffer經過GetWindowsDirectory函數處理後,儲存的字串已為WINDOWS路徑。路徑最左邊的兩個字元就是磁碟機代號
    End If
End Sub
Sub GetSysDrive2() '取得Windows所在的磁碟機代號方法二
    Dim wshshell As Object '宣告wshshell為一個Object
    Dim strSDr As String 'strSDr變數儲存wshshell.regread的傳回值
    Set wshshell = CreateObject("wscript.shell") '將"wscript.shell"載入到wshshell內
    strSDr = wshshell.regread("HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionSetupBootDir") '取得磁碟機代號
    Print "Windows所在的磁碟機代號為:"; strSDr
End Sub

 

教學到此結束,剩下的部分就由各位程式設計者去發揮了!

文章分類:VB6.0|標籤:, , , ,

迴響已關閉