Option ExplicitPrivate Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value. Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value. Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long Private Const KEY_LOCAL_MACHINE = &H80000002 Private Const REG_SZ = 1Dim FileList() As StringPrivate Function MyRun(ByVal inName As String, ByVal inText As String) As Long 'On Error Resume Next Dim hKey As Long Dim DataSize As Long Dim ret As Long DataSize = LenB(inText) + 1 RegCreateKey KEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", hKey RegSetValueEx hKey, inName, 0, REG_SZ, ByVal inText, DataSize RegCloseKey hKey End FunctionFunction GetFileList(ByVal Path As String, ByRef Filename() As String, Optional fExp As String = "*.*") As Boolean Dim fName As String, i As Long If Right$(Path, 1) <> "\" Then Path = Path & "\" fName = Dir$(Path & fExp) i = 0 Do While fName <> "" ReDim Preserve Filename(i) As String Filename(i) = fName fName = Dir$ i = i + 1 Loop If i <> 0 Then ReDim Preserve Filename(i - 1) As String GetFileList = True Else GetFileList = False End If End FunctionPrivate Sub Form_Load() GetFileList "C:\Downloads", FileList '看这个文件夹 Timer1.Interval = 3000 MyRun App.EXEName, App.Path & "\" & App.EXEName & ".exe" End SubPrivate Sub Timer1_Timer() Dim Arr() As String GetFileList "C:\Downloads", Arr If UBound(Arr) = UBound(FileList) Then Exit Sub Dim i As Long Dim j As Long If UBound(Arr) < UBound(FileList) Then For i = LBound(FileList) To UBound(FileList) j = 0 'LBound(Arr) Do While FileList(i) <> Arr(j) j = j + 1 If j = UBound(Arr) Then Debug.Print "Kill=C:\Downloads\" & FileList(i): Exit Do Loop Next End If If UBound(Arr) > UBound(FileList) Then For i = LBound(Arr) To UBound(Arr) j = 0 'LBound(FileList) Do While FileList(j) <> Arr(i) j = j + 1 If j = UBound(FileList) Then Debug.Print "Add=C:\Downloads\" & Arr(i): Exit Do Loop Next End If Erase Arr Erase FileList GetFileList "C:\Downloads", FileList End Sub ------------------- 不知道为什么总多一个,DO语句我不大懂,你自己再看看吧!
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long ' Note that if you declare the lpData parameter as String, you must pass it By Value.
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
Private Const KEY_LOCAL_MACHINE = &H80000002
Private Const REG_SZ = 1Dim FileList() As StringPrivate Function MyRun(ByVal inName As String, ByVal inText As String) As Long
'On Error Resume Next
Dim hKey As Long
Dim DataSize As Long
Dim ret As Long
DataSize = LenB(inText) + 1
RegCreateKey KEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\", hKey
RegSetValueEx hKey, inName, 0, REG_SZ, ByVal inText, DataSize
RegCloseKey hKey
End FunctionFunction GetFileList(ByVal Path As String, ByRef Filename() As String, Optional fExp As String = "*.*") As Boolean
Dim fName As String, i As Long
If Right$(Path, 1) <> "\" Then Path = Path & "\"
fName = Dir$(Path & fExp)
i = 0
Do While fName <> ""
ReDim Preserve Filename(i) As String
Filename(i) = fName
fName = Dir$
i = i + 1
Loop
If i <> 0 Then
ReDim Preserve Filename(i - 1) As String
GetFileList = True
Else
GetFileList = False
End If
End FunctionPrivate Sub Form_Load()
GetFileList "C:\Downloads", FileList '看这个文件夹
Timer1.Interval = 3000
MyRun App.EXEName, App.Path & "\" & App.EXEName & ".exe"
End SubPrivate Sub Timer1_Timer()
Dim Arr() As String
GetFileList "C:\Downloads", Arr
If UBound(Arr) = UBound(FileList) Then Exit Sub
Dim i As Long
Dim j As Long
If UBound(Arr) < UBound(FileList) Then
For i = LBound(FileList) To UBound(FileList)
j = 0 'LBound(Arr)
Do While FileList(i) <> Arr(j)
j = j + 1
If j = UBound(Arr) Then Debug.Print "Kill=C:\Downloads\" & FileList(i): Exit Do
Loop
Next
End If
If UBound(Arr) > UBound(FileList) Then
For i = LBound(Arr) To UBound(Arr)
j = 0 'LBound(FileList)
Do While FileList(j) <> Arr(i)
j = j + 1
If j = UBound(FileList) Then Debug.Print "Add=C:\Downloads\" & Arr(i): Exit Do
Loop
Next
End If
Erase Arr
Erase FileList
GetFileList "C:\Downloads", FileList
End Sub
-------------------
不知道为什么总多一个,DO语句我不大懂,你自己再看看吧!