|
|
马上注册,结识高手,享用更多资源,轻松玩转三维网社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
添加个窗体,在窗体上添加几个控件可2 h3 A, p& v; W" c) I
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, _6 ?; c+ M; o! w8 g' @
ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, _4 Z" j) `5 h! z1 e. s5 \1 D7 l
ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
2 o8 ^( \0 I1 U
+ r8 c6 [# k# ]1 V5 BFunction FindFiles(path As String, SearchStr As String, _
( ~9 P. {" t$ O" k6 F FileCount As Integer, DirCount As Integer)
9 {* k! {+ Z0 ]$ V# m Dim FileName As String ' Walking filename variable.
# I2 `8 V0 O1 i; U) u% j Dim DirName As String ' SubDirectory Name.
* s9 B7 B1 w# ^" u# M Dim dirNames() As String ' Buffer for directory name entries.( m) S, k8 W2 _
Dim nDir As Integer ' Number of directories in this path.+ |* }: M4 D+ _" V
Dim i As Integer ' For-loop counter.4 ?1 _/ \$ {! Q1 }! C) ^3 k0 m
7 f( O6 K" Y9 D; O& ^8 \
On Error GoTo sysFileERR# u3 L' d$ E8 r( C) D
If Right(path, 1) <> "\" Then path = path & "\"+ H t( ~/ u' x! y
' Search for subdirectories.+ T$ {0 f( Q" t( Z4 |8 t$ k0 t
nDir = 0# ^% ^5 V, a! K7 u9 c
ReDim dirNames(nDir)
4 Z. l) C$ F9 P% `* } DirName = Dir(path, vbDirectory Or vbHidden Or vbArchive Or vbReadOnly _
1 t4 `8 t* k" ~0 U: sOr vbSystem) ' Even if hidden, and so on.% ?1 N; v- _9 q
Do While Len(DirName) > 0; d3 n+ `" ~5 D7 ^; `
' Ignore the current and encompassing directories.
+ M5 U% f7 v7 g2 d4 ~1 ^ If (DirName <> ".") And (DirName <> "..") Then& g0 K" _+ K/ @9 j# k
' Check for directory with bitwise comparison.
0 n4 @7 z4 g' B8 I2 n If GetAttr(path & DirName) And vbDirectory Then' y" G% A3 s/ m% P
dirNames(nDir) = DirName6 o x. y% }9 p0 a# S& f
DirCount = DirCount + 1
" {9 s1 U" P' l5 l" B nDir = nDir + 1
) r* ~% W0 i) i ReDim Preserve dirNames(nDir)
2 I# N' c' B- c; V 'listbox2.AddItem path & DirName ' Uncomment to listbox% G" }$ S/ U. ]2 E, B
End If ' directories.
8 o- h5 k; _8 V1 h7 Q% P& f4 ysysFileERRCont:% }& I% \4 t+ K( X: O
End If! `* H. A! M: a
DirName = Dir() ' Get next subdirectory.
' v1 s3 V: v% u* ^ Loop7 Q0 }- j. z) k! x8 y, Y- ~
# X) ?5 j8 {' y$ n& [7 v
' Search through this directory and sum file sizes.' t' G) s' ]; j: b, B; q
FileName = Dir(path & SearchStr, vbNormal Or vbHidden Or vbSystem _
3 J/ h8 A3 l8 d( ` Or vbReadOnly Or vbArchive)! V" v' G8 {. `9 [/ e
While Len(FileName) <> 0
+ X6 ~7 }1 z2 Z FindFiles = FindFiles + FileLen(path & FileName)+ C. C8 ]% X+ d3 e$ |
FileCount = FileCount + 1- v1 q) y- `% w- t
' Load listbox box; G& |, |: D: ?5 c, Y
ListBox2.AddItem path & FileName '& vbTab & _
, y4 b2 ^: _9 o 'FileDateTime(path & FileName) ' Include Modified Date
1 f& P' `/ `! n b# F FileName = Dir() ' Get next file.
% R4 d9 K5 O1 L; w4 W Wend
) a. A. ]& a( v9 s
0 ^ U% o" y( K: x: r+ _7 s ' If there are sub-directories..
8 p# a$ U- S; v$ q If nDir > 0 Then" ^) s: L0 L5 |
' Recursively walk into them
^' a. U- W' w3 l4 j% L- r For i = 0 To nDir - 18 _% V; o: A! l! t2 v- k* f1 K9 ~
FindFiles = FindFiles + FindFiles(path & dirNames(i) & "\", _) s* c4 d7 ^1 c: ]3 S# e: C
SearchStr, FileCount, DirCount)
9 S. o2 _% |6 |- J Next i. p @5 `# y5 b$ Y) u3 W
End If' Y( {& S9 S( M5 t6 N. y! S
+ T9 A& N/ V* p( T! o) a3 K
AbortFunction:6 V2 u" R8 t5 U& {, f c
Exit Function3 d& c' B( r- O
sysFileERR:) c* y* w2 p2 p
If Right(DirName, 4) = ".sys" Then8 P& B8 z4 w9 v) i( }- }
Resume sysFileERRCont ' Known issue with pagefile.sys4 ]* e6 J" D7 H8 u- j$ {
Else
2 e5 d. f" r. I- I( \0 @) B5 }; g- S/ G: x MsgBox "Error: " & Err.Number & " - " & Err.Description, , _
+ ~+ n( F/ g, X( { "Unexpected Error" m& h4 w+ m: B+ U( X
Resume AbortFunction! `' h( R! ]; R9 i! h
End If- M$ e5 J& ~6 y. z) b. b$ j
End Function
" ~( _# y: q7 |; w. p8 S, ]8 G- a; n2 `0 N& C0 {3 E2 i" O
Private Sub CommandButton1_Click()" ?8 _( g, Q8 X& `/ o
SearchForm.Hide
; L q* Q5 m, P+ S, pEnd Sub
0 ~4 |% n1 x! b9 p. U7 ]4 u: G- j
Private Sub Commandbutton2_Click()
8 G9 X7 E& G4 W Dim SearchPath As String, FindStr As String5 ~! I7 l$ _! E$ \7 b5 o
Dim FileSize As Long; ^, t1 C4 |4 }# I/ z! q$ A. g' q
Dim NumFiles As Integer, NumDirs As Integer. l' J$ l" e' N7 J8 F- F
0 u+ w( N- s* i* O4 o' y; A. Z+ M
'Screen.MousePointer = vbHourglass
. p) V3 E4 v3 ?4 g9 ? ListBox2.Clear1 o9 u. A$ `3 f% M9 a& A8 G! V5 W
SearchPath = TextBox1.Text
" t/ ^1 @: j3 H FindStr = "*" & TextBox2.Text & "*" & TextBox3.Text
& {3 O% d! v- q+ h FileSize = FindFiles(SearchPath, FindStr, NumFiles, NumDirs)
D& Q5 x. f: q! F% V TextBox5.Text = NumFiles & " Files found in " & NumDirs + 1 & _
/ O' S* y' }2 B7 ] " Directories"
) ]9 L1 O* W( v7 x 'textbox6.Text = "Size of files found under " & SearchPath & " = " & _
! s5 d( j% K! J 'Format(FileSize, "#,###,###,##0") & " Bytes"4 e a8 P3 c1 K; }- O7 P
'Screen.MousePointer = vbDefault; G" z" ?8 m0 }* w- B3 { o, J
If ListBox2.ListCount = 1 Then ListBox2_Click$ @7 }) y9 \' h# a
End Sub
, p e: m7 s \
, X- b6 r& T7 `. J8 `* B0 |& k8 I5 a6 _/ R; S7 O+ }+ Y. \
Private Sub ListBox2_Click()" f6 K9 a/ j# V# E3 V# D1 ?
Dim strfilename As String
6 S& [- ~ }0 m$ A3 Z8 FIf ListBox2.ListCount >= 1 Then
/ F6 W0 [! e; F- ? '如果没有选中的内容,用上一次的列表项。
: t/ o& S$ k1 A( M If ListBox2.ListIndex = -1 Then D5 x5 I% {( N# O5 S2 v8 p
ListBox2.ListIndex = _6 `+ q( d4 I; ]; s. Y2 e
ListBox2.ListCount - 1: _% V. k* z r+ t
End If2 c$ o% i; Q9 k
strfilename = ListBox2.List(ListBox2.ListIndex)- R/ c4 N G; |7 i/ S5 j0 i" X
' t/ K: D* a1 t" y a8 O I ShellExecute Application.hwnd, "open", strfilename, _3 J1 k P- p% w R: L8 h
vbNullString, vbNullString, 3
& p2 e) Y! @( R5 NEnd If
0 O, @! ^ V9 N& K: e6 j3 m; z4 J: w: [) O, I! i1 C
, _& t: h+ O+ ^# ~$ UEnd Sub* k* C, [0 t3 w
. h+ P% P* {, ^+ n8 [7 h! p* d
Public Sub Start(ByVal strfilename As String, ByVal searchfolder As String)* z- t7 r$ m6 C: L: p
Dim sel
# g# |/ K5 H* g* QDim fs
# m+ E7 a3 N/ K Q1 m- L$ _% D3 Y1 QCommandButton2.Caption = "SEARCH"8 h/ g- G: S9 V
'MsgBox (strfilename)6 ], v: g9 b# f: O* p
strfilename = Strings.Left(strfilename, 8) '取前八位
r7 T, I% A" f! l! D' ^TextBox1.Text = searchfolder) u# `$ @' D6 n" H. s7 J
TextBox2.Text = strfilename
4 m0 G0 @+ G' D/ Q1 X* ZSearchForm.Show vbModeless
% d: u4 {0 ?7 J% B# G: u' U! R Y! l6 T2 u/ b3 W
If Strings.Left(strfilename, 2) <> "17" And Strings.Left(strfilename, 2) <> "H7" And Strings.Left(strfilename, 1) <> "S" Then1 |' q* x5 u* T
MsgBox ("Not drawings No."): s3 D ]# A0 x
9 ~+ F6 L9 s# ~8 H Exit Sub/ ~9 Y6 g2 u; i- g$ Q1 _0 K( w+ _
End If( M; m( d) g) e+ x, O+ Q
3 \7 n# M+ L0 z# |: E l 'CommandButton1.Caption = "Use API code"
" h5 y- V: i- v8 k |2 d 2 o6 U, K' T7 `6 Z
' start with some reasonable defaults
& Y5 s5 N" @% M; A Commandbutton2_Click8 k- p8 c" J( s+ p C/ x- A
End Sub |
|