Programınızın kullanacağı geçici bir dosya oluşturmak istiyorsunuz. Ya da Windows'un bulunduğu klasörü programınıza bildirmek istiyorsunuz. Bu işlemleri gerçekleştirmek çok basit çünkü Windows 3 adet API kullanarak bu klasörleri bulmanıza izin veriyor. Örneğimizi uygulamak için resimde görüldüğü gibi üç adet etiket kontrolü bir adet de komut butonunu formunuz üzerine yerleştirin.
'Ayrı bir BAS modülüne girecek:Option ExplicitPublic Declare Function GetSystemDirectoryLib "kernel32" Alias "GetSystemDirectoryA" _(ByVal lpBuffer As String, ByVal nSize As Long) As LongPublic Declare Function GetTempPath Lib "kernel32"Alias "GetTempPathA" _(ByVal nSize As Long, ByVal lpBuffer As String) As LongPublic Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" _(ByVal lpBuffer As String, ByVal nSize As Long) As Long'Formun General - Declarations bölümüne girecek
rivate Function GetSystemDir() As StringDim r As LongDim nSize As LongDim tmp As Stringtmp = Space$(256)nSize = Len(tmp)r = GetSystemDirectory(tmp, nSize)GetSystemDir = TrimNull(tmp)End FunctionPublic Function GetTempDir() As StringDim r As LongDim nSize As LongDim tmp As Stringtmp = Space$(256)nSize = Len(tmp)r = GetTempPath(nSize, tmp)GetTempDir = TrimNull(tmp)End FunctionPrivate Function GetWinDir() As StringDim r As LongDim nSize As LongDim tmp As String tmp = Space$(256)nSize = Len(tmp)r = GetWindowsDirectory(tmp, nSize)GetWinDir = TrimNull(tmp)End FunctionPrivate Function TrimNull(item As String)Dim pos As Integerpos = InStr(item, Chr$(0))If pos ThenTrimNull = Left$(item, pos - 1)Else: TrimNull = itemEnd IfEnd FunctionPrivate Sub Command1_Click()Label1 = GetWinDir()Label2 = GetTempDir()Label3 = GetSystemDir()End Sub
Yine kafa karıştırıcı bir API. Evet bu işi yapan API bu yalan değil. Ancak size bir de VB'nin Environ() fonksiyonunu tanıtalım:
Bu fonksiyon windows'a ait bilgileri verir. Bunu kullanarak windows dizinini bulmak çok kolaydır:
Dim a as String
a = Environ("Windir")
Sonuç windows dizini olacaktır. O zaman a & "/system" de system dizini olacaktır.
'Ayrı bir BAS modülüne girecek:Option ExplicitPublic Declare Function GetSystemDirectoryLib "kernel32" Alias "GetSystemDirectoryA" _(ByVal lpBuffer As String, ByVal nSize As Long) As LongPublic Declare Function GetTempPath Lib "kernel32"Alias "GetTempPathA" _(ByVal nSize As Long, ByVal lpBuffer As String) As LongPublic Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" _(ByVal lpBuffer As String, ByVal nSize As Long) As Long'Formun General - Declarations bölümüne girecek
Yine kafa karıştırıcı bir API. Evet bu işi yapan API bu yalan değil. Ancak size bir de VB'nin Environ() fonksiyonunu tanıtalım:
Bu fonksiyon windows'a ait bilgileri verir. Bunu kullanarak windows dizinini bulmak çok kolaydır:
Dim a as String
a = Environ("Windir")
Sonuç windows dizini olacaktır. O zaman a & "/system" de system dizini olacaktır.
