VB - Wypełnij TreeView dyskami systemowymi i ich katalogami

Oto procedura, która może wypełnić TreeView dyskami systemowymi i ich katalogami.

Opis

Problem polegał na znalezieniu klucza węzłów, ponieważ czasami klucz był publikowany dwa razy, a potem znalazłem rozwiązanie:

  • Użyj pełnej ścieżki jako klucza iw ten sposób jest pewne, że nie będzie duplikatów.
  • Nie byłem w stanie przetestować dysków sieciowych
  • Wyeliminowałem katalogi systemowe, moim celem jest zbadanie obrazu (dostępnego do pobrania).
  • Procedura jest rekurencyjna i jest stosunkowo krótka.
  • Nie zdziw się, jak długo to trwa (w zależności od systemu), ale procedura jest prawie tak szybka jak Eksplorator Windows, z wyjątkiem tego, że nie jest uruchamiana automatycznie jako start.
  • Możesz pobrać projekt pełnego wykorzystania obrazu w VB6.
  • Po kliknięciu na obrazie wyświetlany jest numer i pełna ścieżka do obrazu.
  • Możesz także zmienić filtry, aby umożliwić wyświetlanie innych obrazów.

Projekt zawiera niestandardowy OCX i DLL, musisz:

  • Rozpakuj folder.
  • Nie klikaj na projekt, przejdź do ikony VB6, kliknij prawym przyciskiem myszy ikonę i otwórz jako administrator.
  • Na otwarciu kliknij „Istniejący” i otwórz projekt LN_Explorateur.vpb
  • Zmodyfikuj szerokość widoku drzewa, przesuwając czerwoną linię (kliknij linię i przesuń).
    • Zmień rozmiar miniatur za pomocą klawisza „S”.

Obraz wyświetlany jest przy użyciu Gdi + dll zredukowanego do najprostszego wyrażenia.

  • Myślę, że procedura może być łatwo przeniesiona na VB.Net

Kod

Opcja Wyraźna

 Sub Initialise_TreeDir (TreeDir jako TreeView) Dim ExpDr, Rep, Drv, S As String, N, D, a, r, Unite Dim Cle As String, sCle As String, Num As Integer, Sr jako Integer Dim nodX Jako Node Num = 64 Set ExpDr = CreateObject ("Scripting.FileSystemObject") Ustaw Drv = ExpDr.Drives dla każdego D w Drv S = D.DriveLetter '& ":" Jeśli D.DriveType = 3 to' réseaux N = D.ShareName ElseIf D.DriveType = 1 Następnie 'DD externe N = "- Média amovible - (" & D.VolumeName & ")" Incr Num: Cle = SS = S & ":" Ustaw nodX = TreeDir.Nodes.Add (,, Cle, S & N, 6) AjoutRep S, Cle, TreeDir ElseIf D.DriveType = 2 Wtedy 'DD N = D.VolumeName Incr Num: Cle = SS = S & ":" Ustaw nodX = TreeDir.Nodes.Add (,, Cle, S & "- (" & N & ")", 2) AjoutRep S, Cle, TreeDir ElfIf D.DriveType = 4 Następnie 'DVD On Error Resume Next N = D.VolumeName If Err = 71 Then N = "Lecteur DVD - (vide) "Else N =" Lecteur DVD - ("& N &") "End Jeśli Incr Num: Cle = Chr (Num) &" 0 "S = S &": - "Ustaw nodX = TreeDir.Nodes .Dodaj (,, Cle, S & N, 3) Else Stop End, jeśli S = "" D = "" Następny zestaw nodX = Nic nie ustaw ExpDr = Nic nie ustaw Drv = Nic nie kończy Sub Sub AjoutRep (Chem As String, Cle As String, TreeDir jako TreeView) Dim Rep, sRp, Obj, sRep, sR2 Dim sCle As String, Num As Integer, Sr jako liczba całkowita Dim nodX jako węzeł Dim NbsR jako liczba całkowita, S jako ciąg Sr = 9 Chem = Chem i IIf (po prawej (Chem, 1) = "”, "", "") Set Obj = CreateObject ("Skrypty .FileSystemObject ") Set Rep = Obj.Getfolder (Chem) If Left (nazwa powtórzenia, 1) =" $ "Następnie GoTo Passe2 Set sRep = Rep.subfolder dla każdego sRp w sRep S = UCase (sRp.Name) Jeśli pozostało (S, 1) = „$” Lub S = „WINDOWS” Lub sRp.Attributes> 100 Lub sRp.Attributes = 19 _ Or Left (S, 6) = „SYSTEM” lub Left (S, 7) = „PROGRAM” Lub w lewo (S, 4) = „UŻYTKOWNIK” _ Lub W lewo (S, 6) = „STEROWNIK” Lub W lewo (S, 5) = „NARZĘDZIA” Następnie Przejdź do Passe On Błąd Błąd Wznów następny zestaw sR2 = sRp.subfolders NbsR = sR2 .Count If Err 0 Then Err = 0: GoTo Passe Incr Sr sCle = sRp.Path & "" On Error GoTo 0 'Debug.Print sRp.Name; „”; Cle; „”; sCle Set nodX = TreeDir.Nodes.Add (Cle, tvwChild, sCle, sRp.Name, 5, 4) Jeśli NbsR> 0 Następnie AjoutRep sRp.Path, sCle, TreeDir End Jeśli Passe: Next Passe2: Set Obj = Nic Set Rep = Nic Set sRep = Nic Set nodX = Nic Set sR2 = Nic End Sub 

Pliki do pobrania

  • Link1
  • Link2

Kredyty

Poprzedni Artykuł Następny Artykuł

Najważniejsze Wskazówki