VB Temp ve Windows Dizinlerinin bulunması

Programlama ve Script dilleri konusunda bilgi paylaşım alanıdır.
Cevapla
Kullanıcı avatarı
mayhemious
Kilobyte4
Kilobyte4
Mesajlar: 698
Kayıt: 17 Kas 2007, 13:14
cinsiyet: Erkek

VB Temp ve Windows Dizinlerinin bulunması

Mesaj gönderen mayhemious »

Temp Dizini

Windows altında program yazmak Windows hakkında çogu seyi bilmeyi gerektirdigi için Temp klasönün nerede oldugu de gereklidir. Bir FTP explorer yamanız gerekse, kullanmanız gereken bir tampon bölge gereklidir. Bu arada Temp ne ise yarar onu da açıklamıs oluyoruz. Temp bir bakıma degis-tokus alanıdır. Bazen programlar kurulduktan donra orada birtakım dosya kalıntıları görebilirsiniz.

Dergilerde de sık sık görürsünüz. Temp"inizi bosaltın diye. Bu Temp bir de programların üzerilerinde çalıstıkları ancak diske dosya olarak kaydetmedikleri dosyalrın da barındıgı yerdir. Diyelim VB le program yazıyorsunuz F5 e basıp çalıstırıyorsunuz. Nasıl oluyor ? Sorunu cevabı: "Temp sagolsun !"

Kullanacagımız API:

Private Declare Function GetTempPath Lib "kernel32" Alias _
"GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As _
String) As Long

Kullanımı da sistem klasörü API islevine bayagı bir benziyor. Asagıda hemen bir kullanım örnegi mevcut.

Kod: Tümünü seç

Private Sub Command1_Click()
Dim TempKlas As String

TempKlas = String(100, Chr$(0))

GetTempPath 100, TempKlas

TempKlas = Left$(TempKlas, InStr(TempKlas, Chr$(0)) - 1)
MsgBox TempKlas
End Sub
________________________________________________________


Windows Dizini

Windows İsletim Sistemi yapısı geregi istenen kalsöre kurulabiliyor. Siz de ne zaman nereye kurulur bilmiyorsunuz, ama isi de garantiye almak istiyorsunuz. O halde tam size göre bir API var.

Kod: Tümünü seç

Option Explicit
Dim path
Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long


Private Sub Form_Load()
Dim WinPath As String
Dim mayhem As String
mayhem = String(200, Chr$(0))
path = Left$(mayhem, GetWindowsDirectory(mayhem, Len(mayhem)))
MsgBox "Windows Dizini : " & path

End Sub
Kullanıcı avatarı
mayhemious
Kilobyte4
Kilobyte4
Mesajlar: 698
Kayıt: 17 Kas 2007, 13:14
cinsiyet: Erkek

Mesaj gönderen mayhemious »

Bu kodla hem windows dizinini, hem system32 klasörünün hem de temp klasörünün yerini labellerde görebiliriz

Kod: Tümünü seç

Option Explicit


  Private Declare Function GetSystemDirectory Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
  Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" _
           (ByVal nSize As Long, ByVal lpBuffer As String) As Long
  Private Declare Function GetWindowsDirectory Lib "kernel32" Alias _
           "GetWindowsDirectoryA" (ByVal lpBuffer As String, _
           ByVal nSize As Long) As Long

Private Sub Command1_Click()
  Label1 = GetWinDir()
  Label2 = GetTempDir()
  Label3 = GetSystemDir()
  End Sub
  
  Private Function GetSystemDir() As String
           Dim r As Long
           Dim nSize As Long
           Dim tmp As String
           tmp = Space$(256)
           nSize = Len(tmp)
           r = GetSystemDirectory(tmp, nSize)
           GetSystemDir = TrimNull(tmp)
  End Function
  
  Public Function GetTempDir() As String
           Dim r As Long
           Dim nSize As Long
           Dim tmp As String
           tmp = Space$(256)
           nSize = Len(tmp)
           r = GetTempPath(nSize, tmp)
           GetTempDir = TrimNull(tmp)
  End Function
  
  Private Function GetWinDir() As String
           Dim r As Long
           Dim nSize As Long
           Dim tmp As String
           tmp = Space$(256)
           nSize = Len(tmp)
           r = GetWindowsDirectory(tmp, nSize)
           GetWinDir = TrimNull(tmp)
  End Function
  
  
  Private Function TrimNull(item As String)
           Dim pos As Integer
           pos = InStr(item, Chr$(0))
           If pos Then
                    TrimNull = Left$(item, pos - 1)
                    Else
                              TrimNull = item
           End If
  End Function
Cevapla