Library tutorials & articles

Getting System Folders Easily via API

Finally...

And finally, here's a easy to insert list of functions you can insert to a module:

Option Explicit
Private Declare Function GetTempPath Lib "kernel32" Alias "GetTempPathA" (ByVal nBufferLength As Long, ByVal lpBuffer As String) As Long
Private Declare Function GetWindowsDirectoryB Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Declare Function GetSystemDirectoryB Lib "kernel32" Alias "GetSystemDirectoryA" (ByVal Path As String, ByVal cbBytes As Long) As Long
Private Const MAX_LENGTH = 512

Public Function GetWindowsSystemDirectory() As String
   Dim s As String
   Dim c As Long
   s = String$(MAX_LENGTH, 0)
   c = GetSystemDirectoryB(s, MAX_LENGTH)
   If c > 0 Then
       If c > Len(s) Then
           s = Space$(c + 1)
           c = GetSystemDirectoryB(s, MAX_LENGTH)
       End If
   End If
   GetWindowsSystemDirectory = IIf(c > 0, Left$(s, c), "")
End Function
Public Function GetWindowsDirectory() As String
   Dim s As String
   Dim c As Long
   s = String$(MAX_LENGTH, 0)
   c = GetWindowsDirectoryB(s, MAX_LENGTH)
   If c > 0 Then
       If c > Len(s) Then
           s = Space$(c + 1)
           c = GetWindowsDirectoryB(s, MAX_LENGTH)
       End If
   End If
   GetWindowsDirectory = IIf(c > 0, Left$(s, c), "")
End Function
Public Function GetTempDirectory() As String
   Dim s As String
   Dim c As Long
   s = Space$(MAX_LENGTH)
   c = GetTempPath(MAX_LENGTH, s)
   If c > 0 Then
       If c > Len(s) Then
           s = Space$(c + 1)
           c = GetTempPath(MAX_LENGTH, s)
       End If
   End If
   GetTempDirectory = IIf(c > 0, Left$(s, c), "")
End Function


Well hopefully you found my tutorial helpful. If my english doesn't make sense blame it on the booze!

As always if your stuck or want some help just post your messages on the forums or email me directly thushan.developerfusion@wsoftware.net and don't forget to include where you came from(as in the article page or subject or else i'll be lost).

Comments

  1. 23 Jul 2005 at 15:37

    When you need the Temp folder, the easy (and clean .Net way) is to use: Path.GetTempPath()

  2. 30 Aug 2003 at 04:46

    it will still work for change dpaths... i used TweakXP to try it out on a few VMs and it worked fine... as far as other languaegs go... i only get English versions of OS's from MS so i dont know what the effects are, i suppose its teh same but i aint sure... amybe someone else maybe able to tell you.

  3. 30 Aug 2003 at 01:26

    so if the user changes their dir from say C:\WinNT\System32\ to C:\WindowsNT\System Files\ would i still be able to get the Windows DIR and System DIR?


    also what about foreign languages?

  4. 04 Jul 2002 at 10:24
    hey,

    sorry i couldnt reply earlier, I only saw my post now!

    thank-you for your kind words!
  5. 21 Jun 2002 at 07:36

    Hey,


    I must say this is EXTREEMLY useful for a nutcase like myself!


    I infact had the exact problem you said most people have.


    Thanks alot! It really helps!

  6. 01 Jan 1999 at 00:00

    This thread is for discussions of Getting System Folders Easily via API.

Leave a comment

Sign in or Join us (it's free).

Thushan Fernando Currently I'm working at Hammond Street Developments Pty Ltd. My time on DeveloperFusion is limited due to workloads, I do however keep a Blog that gets updated fairly regularly with lots of Techno...

Related discussion

Related podcasts

  • Christian Beauclair

    14 mai 2008 (�mission #0074) ::.Christian Beauclair: Stratégies de migration VB6 vers .NET Nous discutons avec Christian Beauclair des stratégies de migration VB6 vers .NET. Entre autres, nous discutons comment utiliser le "VB 6 Code Advisor" et le "Interop Forms Toolkit" pour ajouter la puiss...

Want to stay in touch with what's going on? Follow us on twitter!