'変数の明示的な宣言を強制します。
Option Explicit
'API関数 GetWindowsDirectory の使用を宣言します。
Private Declare Function GetWindowsDirectory Lib "kernel32"
Alias "GetWindowsDirectoryA" _
(ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
'第1引数:取得した情報を格納する変数(文字列型)
'第2引数:第1引数の文字列の長さ
'戻り値:エラーが発生した場合は"0"
' :正常に終了した場合は第1引数に格納された文字列の長さ
'API関数 GetSystemDirectory の使用を宣言します。
Private Declare Function GetSystemDirectory Lib "kernel32"
Alias "GetSystemDirectoryA" _
(ByVal lpBuffer As String, _
ByVal nSize As Long) As Long
'第1引数:取得した情報を格納する変数(文字列型)
'第2引数:第1引数の文字列の長さ
'戻り値 :エラーが発生した場合は"0"
' :正常に終了した場合は第1引数に格納された文字列の長さ
Private Sub Command1_Click()
'API関数GetWindowsDirectoryの戻り値を格納する変数
Dim ret As Long
'第1引数を格納する変数("* 260"は文字列のサイズ。)
Dim WinDir As String * 260
ret = GetWindowsDirectory(WinDir, Len(WinDir))
'戻り値が"0"だったら(エラーが発生したら)...
If ret = 0 Then
Text1.Text = "WindowsDirectoryを取得できませんでした。"
'戻り値が"0"以外だったら...
Else
'変数WinDir内の最初のvbNullCharの位置を求め、Left関数を使用してウインドウズディレクトリ名を取り出します。
Text1.Text = Left(WinDir, InStr(WinDir, vbNullChar) - 1)
End If
End Sub
Private Sub Command2_Click()
'API関数GetSystemDirectoryの戻り値を格納する変数
Dim ret As Long
'第1引数を格納する変数("* 260"は文字列のサイズ。)
Dim SysDir As String * 260
ret = GetSystemDirectory(SysDir, Len(SysDir))
'戻り値が"0"だったら(エラーが発生したら)...
If ret = 0 Then
Text2.Text = "SystemDirectoryを取得できませんでした。"
'戻り値が"0"以外だったら...
Else
'変数SydDir内の最初のvbNullCharの位置を求め、Left関数を使用して'システムディレクトリ名を取り出します。
Text2.Text = Left(SysDir, InStr(SysDir, vbNullChar) - 1)
End If
End Sub
Private Sub Form_Load()
Form1.Caption = "GetWinodwsDirectory & GetSystemDirectoryの使用例"
Command1.Caption = "Windowsディレクトリの取得"
Command2.Caption = "Systemディレクトリの取得"
End Sub