戻る



Windoswディレクトリ及びSystemディレクトリを取得する方法 (API関数を使用)
動作環境 Windows95/98/2000 開発環境 Visual Basic 6.0 (+SP5)
説明 API関数 GetWindowsDirectory、GetSystemDirectory を使用し、Windowsディレクトリ、Systemディレクトリを取得します。
用意するもの:標準フォーム(Form1)、テキストボックス(Text1,Text2)コマンドボタン(Command1,Command2)


'変数の明示的な宣言を強制します。

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