日期:2009 年 07 月 27 日 |作者:幻嵐
程式設計者在設計程式時,常常會需要用到一些常用的系統路徑。例如:「桌面」路徑、「我的文件」路徑、「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|標籤:App.Path, VB6.0, 取得我的文件路徑, 取得桌面路徑, 取得系統路徑
http://it-easy.tw/vb-get-path/