锁定光驱在Win2000上的实现
来源:互联网 发布:ubuntu arm gcc 编辑:程序博客网 时间:2024/04/30 06:41
最近看到很多朋友在讨论如何锁住光驱的问题,但是没有一个结果。
趁着周末闲,写出代码和大家一起分享。
新建一个工程,在窗体上加入两个按钮,粘贴以下程序,看看效果怎么样?^_^
Option Explicit
Private Const GENERIC_READ As Long = &H80000000
Private Const FILE_SHARE_READ As Long = &H1
Private Const FILE_SHARE_WRITE As Long = &H2
Private Const OPEN_EXISTING As Long = 3
Private Const IOCTL_STORAGE_MEDIA_REMOVAL As Long = &H2D4804
Private Type PREVENT_MEDIA_REMOVAL
PreventMediaRemoval As Byte
End Type
Private Declare Function DeviceIoControl Lib "kernel32" (ByVal hDevice As Long, ByVal dwIoControlCode As Long, lpInBuffer As Any, ByVal nInBufferSize As Long, lpOutBuffer As Any, ByVal nOutBufferSize As Long, lpBytesReturned As Long, lpOverlapped As Any) As Long
Private Declare Function CreateFile Lib "kernel32" Alias "CreateFileA" (ByVal lpFileName As String, ByVal dwDesiredAccess As Long, ByVal dwShareMode As Long, lpSecurityAttributes As Any, ByVal dwCreationDisposition As Long, ByVal dwFlagsAndAttributes As Long, ByVal hTemplateFile As Long) As Long
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
Public Function LockCDROM(szDrive As String, IsLock As Boolean) As Boolean
On Error GoTo Err
Dim hDevice As Long
Dim PMR As PREVENT_MEDIA_REMOVAL
Dim bytesReturned As Long
Dim Success As Long
hDevice = CreateFile("//./" & szDrive, GENERIC_READ, FILE_SHARE_READ Or FILE_SHARE_WRITE, ByVal 0&, OPEN_EXISTING, 0&, 0&)
PMR.PreventMediaRemoval = CByte(Abs(IsLock))
Success = DeviceIoControl(hDevice, IOCTL_STORAGE_MEDIA_REMOVAL, PMR, Len(PMR), ByVal 0&, 0&, bytesReturned, ByVal 0&)
CloseHandle hDevice
LockCDROM = True
Exit Function
Err:
LockCDROM = False
End Function
Private Sub Command1_Click()
Dim ret As Boolean
ret = LockCDROM("H:", True) '我的光驱盘符是H:
If ret Then
MsgBox "锁定成功", vbInformation, "提示"
Else
MsgBox "锁定失败", vbInformation, "提示"
End If
End Sub
Private Sub Command2_Click()
Dim ret As Boolean
ret = LockCDROM("H:", False)
If ret Then
MsgBox "解除锁定成功", vbInformation, "提示"
Else
MsgBox "解除锁定失败", vbInformation, "提示"
End If
End Sub
- 锁定光驱在Win2000上的实现
- Win2000以上系统中如何锁定光驱
- 在WINXP的电脑上安装WIN2000
- VB6实现在Win2000/XP上隐藏进程
- 在 ASP.NET 上实现锁定表头、支持滚动的表格的做法
- 在 ASP.NET 上实现锁定表头、支持滚动的表格的做法
- Sfilter在Win2000下动态加载的实现
- Sfilter在Win2000下动态加载的实现
- QuickReport在Win2000中实现自定义纸张的打印方法
- 在Web上实现数据表动态行列锁定
- 如何在Win2000上安装配置防火墙
- 在Win2000上彻底卸载Oracle
- 在AMD GEDOE LX800 上安装Win2000
- 在windows上使用win2000资源工具
- 在Web上的Grid表格(提供锁定)
- logstash在windows上fileinput会锁定文件的问题
- 在win2000下实现透明窗口
- VB在Win2000下实现关机
- apache2的中文手册
- 等待pear投票的模板程序HTML_Template_Savant
- php+ImageMagick+imagick API 配置指南
- 如何理解VB窗体中的scale类属性及width height属性之间的关系。
- test
- 锁定光驱在Win2000上的实现
- 高效的中文字符串截取函数(徐祖宁)
- 英语900句之一
- 英语900句之二
- 英语900句之三
- 英语900句之四
- 英语900句之七
- 英语900句之八
- 英语900句之五