home *** CD-ROM | disk | FTP | other *** search
/ PC Plus SuperCD (UK) 2000 March / pcp161a.iso / handson / files / vbwkshp / Form1.frm (.txt) next >
Encoding:
Visual Basic Form  |  1999-11-27  |  3.1 KB  |  97 lines

  1. VERSION 5.00
  2. Begin VB.Form Form1 
  3.    Caption         =   "Form1"
  4.    ClientHeight    =   5760
  5.    ClientLeft      =   60
  6.    ClientTop       =   345
  7.    ClientWidth     =   8175
  8.    LinkTopic       =   "Form1"
  9.    ScaleHeight     =   5760
  10.    ScaleWidth      =   8175
  11.    StartUpPosition =   3  'Windows Default
  12.    Begin VB.TextBox Text1 
  13.       BeginProperty Font 
  14.          Name            =   "Lucida Console"
  15.          Size            =   14.25
  16.          Charset         =   0
  17.          Weight          =   400
  18.          Underline       =   0   'False
  19.          Italic          =   0   'False
  20.          Strikethrough   =   0   'False
  21.       EndProperty
  22.       Height          =   4935
  23.       Left            =   1440
  24.       MultiLine       =   -1  'True
  25.       ScrollBars      =   2  'Vertical
  26.       TabIndex        =   1
  27.       Top             =   240
  28.       Width           =   6615
  29.    End
  30.    Begin VB.CommandButton Command1 
  31.       Caption         =   "Directory"
  32.       Height          =   495
  33.       Left            =   120
  34.       TabIndex        =   0
  35.       Top             =   240
  36.       Width           =   1215
  37.    End
  38. Attribute VB_Name = "Form1"
  39. Attribute VB_GlobalNameSpace = False
  40. Attribute VB_Creatable = False
  41. Attribute VB_PredeclaredId = True
  42. Attribute VB_Exposed = False
  43. Option Explicit
  44. Const MAX_PATH = 260
  45. Const INVALID_HANDLE = -1
  46. Private Type FILETIME
  47.         dwLowDateTime As Long
  48.         dwHighDateTime As Long
  49. End Type
  50. Private Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, lpFindFileData As WIN32_FIND_DATA) As Long
  51. Private Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Long, lpFindFileData As WIN32_FIND_DATA) As Long
  52. Private Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Long) As Long
  53. Private Type WIN32_FIND_DATA
  54.         dwFileAttributes As Long
  55.         ftCreationTime As FILETIME
  56.         ftLastAccessTime As FILETIME
  57.         ftLastWriteTime As FILETIME
  58.         nFileSizeHigh As Long
  59.         nFileSizeLow As Long
  60.         dwReserved0 As Long
  61.         dwReserved1 As Long
  62.         cFileName As String * MAX_PATH
  63.         cAlternate As String * 14
  64. End Type
  65. Dim fd As WIN32_FIND_DATA
  66. Function FindFiles(currentPath As String) As NodeList
  67. Dim h As Long, more As Boolean
  68. Dim n As NodeList, list As NodeList, fn As String, attr As Integer
  69. Set list = New NodeList
  70. h = FindFirstFile(currentPath & "\*.*", fd)
  71. more = h <> INVALID_HANDLE
  72. While more
  73.     fn = TrimString(fd.cFileName)
  74.     If Left(fn, 1) <> "." Then
  75.         attr = fd.dwFileAttributes
  76.         If attr And vbDirectory Then
  77.             Set n = FindFiles(currentPath & "\" & fn)
  78.         Else
  79.             Set n = Nothing
  80.         End If
  81.         Call list.Add(fn, attr, n)
  82.     End If
  83.     more = FindNextFile(h, fd)
  84. Set FindFiles = list
  85. FindClose (h)
  86. End Function
  87. Private Sub Command1_Click()
  88. Dim tree As NodeList
  89. Set tree = FindFiles("C:\")
  90. Text1.Text = tree.Display("")
  91. End Sub
  92. Function TrimString(s1 As String) As String
  93. Dim i As Long
  94. i = InStr(s1, Chr(0))
  95. TrimString = Left(s1, i - 1)
  96. End Function
  97.